mirror of
https://github.com/denoland/deno.git
synced 2024-11-28 16:20:57 -05:00
fix(ext/napi): pass user context to napi_threadsafe_fn finalizers (#26229)
Fixes https://github.com/denoland/deno/issues/26228
This commit is contained in:
parent
7c3da2ec1c
commit
d22195e741
2 changed files with 5 additions and 3 deletions
|
@ -692,7 +692,7 @@ impl Drop for TsFn {
|
||||||
|
|
||||||
if let Some(finalizer) = self.thread_finalize_cb {
|
if let Some(finalizer) = self.thread_finalize_cb {
|
||||||
unsafe {
|
unsafe {
|
||||||
(finalizer)(self.env as _, self.thread_finalize_data, ptr::null_mut());
|
(finalizer)(self.env as _, self.thread_finalize_data, self.context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
"Create async resource string in napi_register_module_v1 napi_register_module_v1"
|
||||||
);
|
);
|
||||||
let mut custom_gc_tsfn = ptr::null_mut();
|
let mut custom_gc_tsfn = ptr::null_mut();
|
||||||
|
let context = Box::into_raw(Box::new(0)) as *mut c_void;
|
||||||
check_status_or_panic!(
|
check_status_or_panic!(
|
||||||
unsafe {
|
unsafe {
|
||||||
sys::napi_create_threadsafe_function(
|
sys::napi_create_threadsafe_function(
|
||||||
|
@ -57,7 +58,7 @@ fn create_custom_gc(env: sys::napi_env) {
|
||||||
1,
|
1,
|
||||||
ptr::null_mut(),
|
ptr::null_mut(),
|
||||||
Some(custom_gc_finalize),
|
Some(custom_gc_finalize),
|
||||||
ptr::null_mut(),
|
context,
|
||||||
Some(custom_gc),
|
Some(custom_gc),
|
||||||
&mut custom_gc_tsfn,
|
&mut custom_gc_tsfn,
|
||||||
)
|
)
|
||||||
|
@ -80,8 +81,9 @@ unsafe extern "C" fn empty(
|
||||||
unsafe extern "C" fn custom_gc_finalize(
|
unsafe extern "C" fn custom_gc_finalize(
|
||||||
_env: sys::napi_env,
|
_env: sys::napi_env,
|
||||||
_finalize_data: *mut c_void,
|
_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(
|
extern "C" fn custom_gc(
|
||||||
|
|
Loading…
Reference in a new issue