diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-02-01 06:41:04 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-01 15:41:04 +0100 |
commit | 524bccdf6aa20ee4ba76dc7291d77b4c98fa7e28 (patch) | |
tree | a312f7fadf6a086f37bcc5326b42efbe114617be /ext | |
parent | 1b46b2f0e47b93635b8f225f43bb82fd79dd31dc (diff) |
fix(napi): return node globalThis from napi_get_global (#17613)
Fixes https://github.com/denoland/deno/issues/17587
Diffstat (limited to 'ext')
-rw-r--r-- | ext/napi/lib.rs | 5 | ||||
-rw-r--r-- | ext/node/02_require.js | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/ext/napi/lib.rs b/ext/napi/lib.rs index 789aec5eb..59a07136d 100644 --- a/ext/napi/lib.rs +++ b/ext/napi/lib.rs @@ -418,6 +418,7 @@ pub struct Env { Rc<RefCell<Vec<(extern "C" fn(*const c_void), *const c_void)>>>, pub tsfn_ref_counters: Arc<Mutex<ThreadsafeFunctionRefCounters>>, pub last_error: napi_extended_error_info, + pub global: NonNull<v8::Value>, } unsafe impl Send for Env {} @@ -427,6 +428,7 @@ impl Env { pub fn new( isolate_ptr: *mut v8::OwnedIsolate, context: v8::Global<v8::Context>, + global: v8::Global<v8::Value>, sender: mpsc::UnboundedSender<PendingNapiAsyncWork>, threadsafe_function_sender: mpsc::UnboundedSender<ThreadSafeFunctionStatus>, cleanup_hooks: Rc< @@ -446,6 +448,7 @@ impl Env { Self { isolate_ptr, context: context.into_raw(), + global: global.into_raw(), shared: std::ptr::null_mut(), open_handle_scopes: 0, async_work_sender: sender, @@ -602,6 +605,7 @@ fn op_napi_open<NP, 'scope>( scope: &mut v8::HandleScope<'scope>, op_state: &mut OpState, path: String, + global: serde_v8::Value, ) -> std::result::Result<serde_v8::Value<'scope>, AnyError> where NP: NapiPermissions + 'static, @@ -644,6 +648,7 @@ where let mut env = Env::new( isolate_ptr, v8::Global::new(scope, ctx), + v8::Global::new(scope, global.v8_value), async_work_sender, tsfn_sender, cleanup_hooks, diff --git a/ext/node/02_require.js b/ext/node/02_require.js index 7b44787fd..bda74c01f 100644 --- a/ext/node/02_require.js +++ b/ext/node/02_require.js @@ -804,7 +804,7 @@ if (filename.endsWith("fsevents.node")) { throw new Error("Using fsevents module is currently not supported"); } - module.exports = ops.op_napi_open(filename); + module.exports = ops.op_napi_open(filename, node.globalThis); }; function createRequireFromPath(filename) { |