summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-10-14 12:41:34 +0530
committerGitHub <noreply@github.com>2024-10-14 12:41:34 +0530
commitd22195e7416e7923e2868e3f250abb457f115fc6 (patch)
tree8d2f73dee5a9f9954901f022fb172fd5f77d3dfa
parent7c3da2ec1c12c8c16b04d89b7aec5e04cd2ff3be (diff)
fix(ext/napi): pass user context to napi_threadsafe_fn finalizers (#26229)
Fixes https://github.com/denoland/deno/issues/26228
-rw-r--r--cli/napi/node_api.rs2
-rw-r--r--tests/napi/src/tsfn.rs6
2 files changed, 5 insertions, 3 deletions
diff --git a/cli/napi/node_api.rs b/cli/napi/node_api.rs
index 2efb71c26..4497a4695 100644
--- a/cli/napi/node_api.rs
+++ b/cli/napi/node_api.rs
@@ -692,7 +692,7 @@ impl Drop for TsFn {
if let Some(finalizer) = self.thread_finalize_cb {
unsafe {
- (finalizer)(self.env as _, self.thread_finalize_data, ptr::null_mut());
+ (finalizer)(self.env as _, self.thread_finalize_data, self.context);
}
}
}
diff --git a/tests/napi/src/tsfn.rs b/tests/napi/src/tsfn.rs
index dabc96f83..a3a231cec 100644
--- a/tests/napi/src/tsfn.rs
+++ b/tests/napi/src/tsfn.rs
@@ -46,6 +46,7 @@ fn create_custom_gc(env: sys::napi_env) {
"Create async resource string in napi_register_module_v1 napi_register_module_v1"
);
let mut custom_gc_tsfn = ptr::null_mut();
+ let context = Box::into_raw(Box::new(0)) as *mut c_void;
check_status_or_panic!(
unsafe {
sys::napi_create_threadsafe_function(
@@ -57,7 +58,7 @@ fn create_custom_gc(env: sys::napi_env) {
1,
ptr::null_mut(),
Some(custom_gc_finalize),
- ptr::null_mut(),
+ context,
Some(custom_gc),
&mut custom_gc_tsfn,
)
@@ -80,8 +81,9 @@ unsafe extern "C" fn empty(
unsafe extern "C" fn custom_gc_finalize(
_env: sys::napi_env,
_finalize_data: *mut c_void,
- _finalize_hint: *mut c_void,
+ finalize_hint: *mut c_void,
) {
+ let _ = Box::from_raw(finalize_hint as *mut i32);
}
extern "C" fn custom_gc(