fix(napi): Fix misused napi_callback_info in CallbackInfo (#30983)
Some checks are pending
ci / build libs (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions

This commit is contained in:
CPunisher 2025-10-14 15:57:49 +08:00 committed by GitHub
parent 80e54a81e7
commit e2b107867e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 8 additions and 9 deletions

View file

@ -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<v8::Local<v8::String>>,
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)

View file

@ -188,7 +188,7 @@ fn napi_create_function<'s>(
name: *const c_char,
length: usize,
cb: Option<napi_callback>,
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;
}
}