From 82e930726ee5dbac8e6eae0962c07c72daf9843c Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Sat, 7 Jan 2023 05:37:42 +0800 Subject: [PATCH] fix(core): get v8 console from context extra bindings (#17243) Explicitly get `console` object from V8 instead of relying on `console` defined on the global object. --- core/bindings.rs | 6 ++++++ runtime/js/99_main.js | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/bindings.rs b/core/bindings.rs index 07ad136ac0..b9285a402d 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -133,6 +133,12 @@ pub fn initialize_context<'s>( // Bind functions to Deno.core.* set_func(scope, core_obj, "callConsole", call_console); + // Bind v8 console object to Deno.core.console + let extra_binding_obj = context.get_extras_binding_object(scope); + let console_str = v8::String::new(scope, "console").unwrap(); + let console_obj = extra_binding_obj.get(scope, console_str.into()).unwrap(); + core_obj.set(scope, console_str.into(), console_obj); + // Bind functions to Deno.core.ops.* let ops_obj = v8::Object::new(scope); let ops_str = v8::String::new(scope, "ops").unwrap(); diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index 873f371cac..d4a5a0a845 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -399,7 +399,7 @@ delete Intl.v8BreakIterator; performance.setTimeOrigin(DateNow()); net.setup(runtimeOptions.unstableFlag); - const consoleFromV8 = window.console; + const consoleFromV8 = window.Deno.core.console; const wrapConsole = window.__bootstrap.console.wrapConsole; // Remove bootstrapping data from the global scope @@ -544,7 +544,7 @@ delete Intl.v8BreakIterator; performance.setTimeOrigin(DateNow()); net.setup(runtimeOptions.unstableFlag); - const consoleFromV8 = window.console; + const consoleFromV8 = window.Deno.core.console; const wrapConsole = window.__bootstrap.console.wrapConsole; // Remove bootstrapping data from the global scope