From e2b107867ea40395ff7999064fd9494eb09e2153 Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Tue, 14 Oct 2025 15:57:49 +0800 Subject: [PATCH] fix(napi): Fix misused `napi_callback_info` in `CallbackInfo` (#30983) --- ext/napi/function.rs | 10 +++++----- ext/napi/js_native_api.rs | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/ext/napi/function.rs b/ext/napi/function.rs index 0a521ce498..0cb1857288 100644 --- a/ext/napi/function.rs +++ b/ext/napi/function.rs @@ -6,7 +6,7 @@ use crate::*; pub struct CallbackInfo { pub env: *mut Env, pub cb: napi_callback, - pub cb_info: napi_callback_info, + pub data: *mut c_void, pub args: *const c_void, } @@ -15,12 +15,12 @@ impl CallbackInfo { pub fn new_raw( env: *mut Env, cb: napi_callback, - cb_info: napi_callback_info, + data: *mut c_void, ) -> *mut Self { Box::into_raw(Box::new(Self { env, cb, - cb_info, + data, args: std::ptr::null(), })) } @@ -58,10 +58,10 @@ pub fn create_function<'s>( env: *mut Env, name: Option>, cb: napi_callback, - cb_info: napi_callback_info, + data: *mut c_void, ) -> v8::Local<'s, v8::Function> { let external = - v8::External::new(scope, CallbackInfo::new_raw(env, cb, cb_info) as *mut _); + v8::External::new(scope, CallbackInfo::new_raw(env, cb, data) as *mut _); let function = v8::Function::builder_raw(call_fn) .data(external.into()) .build(scope) diff --git a/ext/napi/js_native_api.rs b/ext/napi/js_native_api.rs index 5dc93ca8a9..fe59fb617f 100644 --- a/ext/napi/js_native_api.rs +++ b/ext/napi/js_native_api.rs @@ -188,7 +188,7 @@ fn napi_create_function<'s>( name: *const c_char, length: usize, cb: Option, - cb_info: napi_callback_info, + data: *mut c_void, result: *mut napi_value<'s>, ) -> napi_status { let env_ptr = env as *mut Env; @@ -206,8 +206,7 @@ fn napi_create_function<'s>( unsafe { v8::callback_scope!(unsafe scope, env.context()); - *result = - create_function(scope, env_ptr, name, cb.unwrap(), cb_info).into(); + *result = create_function(scope, env_ptr, name, cb.unwrap(), data).into(); } napi_ok @@ -1674,7 +1673,7 @@ fn napi_get_cb_info( if !data.is_null() { unsafe { - *data = cbinfo.cb_info; + *data = cbinfo.data; } }