diff options
author | snek <snek@deno.com> | 2024-10-16 12:30:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-16 10:30:19 +0000 |
commit | ea9c3ffaa240fc968832871000832eda1b92934a (patch) | |
tree | e646d5fb6ae7a84ff5889a2b5fad89e5bedcab59 /cli/napi/js_native_api.rs | |
parent | 2929d583d2f690b5a3d600296363a8ecd90440eb (diff) |
fix: node-api function call should use preamble (#26297)
`napi_call_function` should use our equiv of NAPI_PREAMBLE (`&mut Env`
instead of `*mut Env`) since it needs to set error codes based on
whether the body of the function raised a JS exception.
Fixes: https://github.com/denoland/deno/issues/26282
Diffstat (limited to 'cli/napi/js_native_api.rs')
-rw-r--r-- | cli/napi/js_native_api.rs | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/cli/napi/js_native_api.rs b/cli/napi/js_native_api.rs index e922d8c3f..1d2c99c2c 100644 --- a/cli/napi/js_native_api.rs +++ b/cli/napi/js_native_api.rs @@ -1694,15 +1694,14 @@ fn napi_get_new_target( } #[napi_sym] -fn napi_call_function( - env_ptr: *mut Env, - recv: napi_value, - func: napi_value, +fn napi_call_function<'s>( + env: &'s mut Env, + recv: napi_value<'s>, + func: napi_value<'s>, argc: usize, - argv: *const napi_value, - result: *mut napi_value, + argv: *const napi_value<'s>, + result: *mut napi_value<'s>, ) -> napi_status { - let env = check_env!(env_ptr); check_arg!(env, recv); let args = if argc > 0 { check_arg!(env, argv); @@ -1716,11 +1715,11 @@ fn napi_call_function( let Some(func) = func.and_then(|f| v8::Local::<v8::Function>::try_from(f).ok()) else { - return napi_set_last_error(env, napi_function_expected); + return napi_function_expected; }; let Some(v) = func.call(&mut env.scope(), recv.unwrap(), args) else { - return napi_set_last_error(env_ptr, napi_generic_failure); + return napi_generic_failure; }; if !result.is_null() { @@ -1729,7 +1728,7 @@ fn napi_call_function( } } - return napi_clear_last_error(env_ptr); + napi_ok } #[napi_sym] |