diff options
Diffstat (limited to 'cli/napi/util.rs')
-rw-r--r-- | cli/napi/util.rs | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/cli/napi/util.rs b/cli/napi/util.rs index cd3ef14a2..63d8effbf 100644 --- a/cli/napi/util.rs +++ b/cli/napi/util.rs @@ -15,10 +15,11 @@ impl<T> SendPtr<T> { unsafe impl<T> Send for SendPtr<T> {} unsafe impl<T> Sync for SendPtr<T> {} -pub fn get_array_buffer_ptr(ab: v8::Local<v8::ArrayBuffer>) -> *mut u8 { - // SAFETY: Thanks to the null pointer optimization, NonNull<T> and Option<NonNull<T>> are guaranteed - // to have the same size and alignment. - unsafe { std::mem::transmute(ab.data()) } +pub fn get_array_buffer_ptr(ab: v8::Local<v8::ArrayBuffer>) -> *mut c_void { + match ab.data() { + Some(p) => p.as_ptr(), + None => std::ptr::null_mut(), + } } struct BufferFinalizer { @@ -216,10 +217,6 @@ impl<'s> Nullable for napi_value<'s> { } } -// TODO: replace Nullable with some sort of "CheckedUnwrap" trait -// *mut T -> &mut MaybeUninit<T> -// Option<T> -> T -// napi_value -> Local<Value> #[macro_export] macro_rules! check_arg { ($env: expr, $ptr: expr) => { |