diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-01-23 00:51:55 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-23 14:21:55 +0530 |
commit | 2e1df623804fd580d236d89d7277a28d66d7dddb (patch) | |
tree | 32abc2a22877e9298158134b67a23b9b8e5d00a2 /cli/napi | |
parent | c3e3694b9df3154f17796c23e027dc9d2ffc4c91 (diff) |
fix(napi): improve napi_detach_arraybuffer (#17499)
Diffstat (limited to 'cli/napi')
-rw-r--r-- | cli/napi/js_native_api.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/cli/napi/js_native_api.rs b/cli/napi/js_native_api.rs index c3f7d5da7..9f043ec94 100644 --- a/cli/napi/js_native_api.rs +++ b/cli/napi/js_native_api.rs @@ -1497,10 +1497,21 @@ fn napi_delete_reference(env: *mut Env, _nref: napi_ref) -> Result { } #[napi_sym::napi_sym] -fn napi_detach_arraybuffer(_env: *mut Env, value: napi_value) -> Result { +fn napi_detach_arraybuffer(env: *mut Env, value: napi_value) -> Result { + check_env!(env); + let value = napi_value_unchecked(value); - let ab = v8::Local::<v8::ArrayBuffer>::try_from(value).unwrap(); - ab.detach(None); + let ab = v8::Local::<v8::ArrayBuffer>::try_from(value) + .map_err(|_| Error::ArrayBufferExpected)?; + + if !ab.is_detachable() { + return Err(Error::DetachableArraybufferExpected); + } + + // Expected to crash for None. + ab.detach(None).unwrap(); + + napi_clear_last_error(env); Ok(()) } |