Skip to content

Commit e095c54

Browse files
bartlomiejulittledivy
authored andcommitted
chore: update rusty_v8 to 0.56.0 (#16814)
Co-authored-by: Divy Srivastava <[email protected]>
1 parent bcbcc72 commit e095c54

File tree

3 files changed

+36
-15
lines changed

3 files changed

+36
-15
lines changed

Cargo.lock

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ license = "MIT"
4040
repository = "https://github.com/denoland/deno"
4141

4242
[workspace.dependencies]
43-
v8 = { version = "0.55.0", default-features = false }
43+
v8 = { version = "0.56.0", default-features = false }
4444
deno_ast = { version = "0.21.0", features = ["transpiling"] }
4545

4646
deno_core = { version = "0.161.0", path = "./core" }

ops/lib.rs

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -458,9 +458,13 @@ fn codegen_u8_slice(core: &TokenStream2, idx: usize) -> TokenStream2 {
458458
match #core::v8::Local::<#core::v8::ArrayBuffer>::try_from(value) {
459459
Ok(b) => {
460460
let byte_length = b.byte_length();
461-
let store = b.data() as *mut u8;
462-
// SAFETY: rust guarantees that lifetime of slice is no longer than the call.
463-
unsafe { ::std::slice::from_raw_parts_mut(store, byte_length) }
461+
if let Some(data) = b.data() {
462+
let store = data.cast::<u8>().as_ptr();
463+
// SAFETY: rust guarantees that lifetime of slice is no longer than the call.
464+
unsafe { ::std::slice::from_raw_parts_mut(store, byte_length) }
465+
} else {
466+
&mut []
467+
}
464468
},
465469
Err(_) => {
466470
if let Ok(view) = #core::v8::Local::<#core::v8::ArrayBufferView>::try_from(value) {
@@ -472,9 +476,13 @@ fn codegen_u8_slice(core: &TokenStream2, idx: usize) -> TokenStream2 {
472476
return #core::_ops::throw_type_error(scope, format!("Expected ArrayBufferView at position {}", #idx));
473477
}
474478
};
475-
let store = buffer.data() as *mut u8;
476-
// SAFETY: rust guarantees that lifetime of slice is no longer than the call.
477-
unsafe { ::std::slice::from_raw_parts_mut(store.add(offset), len) }
479+
if let Some(data) = buffer.data() {
480+
let store = data.cast::<u8>().as_ptr();
481+
// SAFETY: rust guarantees that lifetime of slice is no longer than the call.
482+
unsafe { ::std::slice::from_raw_parts_mut(store.add(offset), len) }
483+
} else {
484+
&mut []
485+
}
478486
} else {
479487
return #core::_ops::throw_type_error(scope, format!("Expected ArrayBufferView at position {}", #idx));
480488
}
@@ -487,7 +495,13 @@ fn codegen_u8_ptr(core: &TokenStream2, idx: usize) -> TokenStream2 {
487495
quote! {{
488496
let value = args.get(#idx as i32);
489497
match #core::v8::Local::<#core::v8::ArrayBuffer>::try_from(value) {
490-
Ok(b) => b.data() as *const u8,
498+
Ok(b) => {
499+
if let Some(data) = b.data() {
500+
data.cast::<u8>().as_ptr()
501+
} else {
502+
std::ptr::null::<u8>()
503+
}
504+
},
491505
Err(_) => {
492506
if let Ok(view) = #core::v8::Local::<#core::v8::ArrayBufferView>::try_from(value) {
493507
let offset = view.byte_offset();
@@ -497,7 +511,11 @@ fn codegen_u8_ptr(core: &TokenStream2, idx: usize) -> TokenStream2 {
497511
return #core::_ops::throw_type_error(scope, format!("Expected ArrayBufferView at position {}", #idx));
498512
}
499513
};
500-
let store = buffer.data() as *mut u8;
514+
let store = if let Some(data) = buffer.data() {
515+
data.cast::<u8>().as_ptr()
516+
} else {
517+
std::ptr::null_mut::<u8>()
518+
};
501519
unsafe { store.add(offset) }
502520
} else {
503521
return #core::_ops::throw_type_error(scope, format!("Expected ArrayBufferView at position {}", #idx));
@@ -517,9 +535,13 @@ fn codegen_u32_mut_slice(core: &TokenStream2, idx: usize) -> TokenStream2 {
517535
return #core::_ops::throw_type_error(scope, format!("Expected Uint32Array at position {}", #idx));
518536
}
519537
};
520-
let store = buffer.data() as *mut u8;
521-
// SAFETY: buffer from Uint32Array. Rust guarantees that lifetime of slice is no longer than the call.
522-
unsafe { ::std::slice::from_raw_parts_mut(store.add(offset) as *mut u32, len / 4) }
538+
if let Some(data) = buffer.data() {
539+
let store = data.cast::<u8>().as_ptr();
540+
// SAFETY: buffer from Uint32Array. Rust guarantees that lifetime of slice is no longer than the call.
541+
unsafe { ::std::slice::from_raw_parts_mut(store.add(offset) as *mut u32, len / 4) }
542+
} else {
543+
&mut []
544+
}
523545
} else {
524546
return #core::_ops::throw_type_error(scope, format!("Expected Uint32Array at position {}", #idx));
525547
}

0 commit comments

Comments
 (0)