summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-02-01 06:41:04 -0800
committerGitHub <noreply@github.com>2023-02-01 15:41:04 +0100
commit524bccdf6aa20ee4ba76dc7291d77b4c98fa7e28 (patch)
treea312f7fadf6a086f37bcc5326b42efbe114617be /ext
parent1b46b2f0e47b93635b8f225f43bb82fd79dd31dc (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.rs5
-rw-r--r--ext/node/02_require.js2
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) {