From 8398bf9128956b9c59bb7b0a6846f554707257b0 Mon Sep 17 00:00:00 2001 From: Fedor Indutny Date: Sun, 27 Apr 2014 12:42:43 +0400 Subject: [PATCH] debugger: assign Environment to DebugContext too fix #7517 --- src/node.cc | 8 ++++++++ test/debugger/test-debugger-repl.js | 11 ++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/node.cc b/src/node.cc index be04da0b09..fff8b30f67 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3093,6 +3093,9 @@ static void EnableDebug(Isolate* isolate, bool wait_connect) { if (env == NULL) return; // Still starting up. + // Assign environment to the debugger's context + env->AssignToContext(v8::Debug::GetDebugContext()); + Context::Scope context_scope(env->context()); Local message = Object::New(env->isolate()); message->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "cmd"), @@ -3594,6 +3597,11 @@ int Start(int argc, char** argv) { Locker locker(node_isolate); Environment* env = CreateEnvironment(node_isolate, argc, argv, exec_argc, exec_argv); + // Assign env to the debugger's context + if (debugger_running) { + HandleScope scope(env->isolate()); + env->AssignToContext(v8::Debug::GetDebugContext()); + } // This Context::Scope is here so EnableDebug() can look up the current // environment with Environment::GetCurrentChecked(). // TODO(bnoordhuis) Reorder the debugger initialization logic so it can diff --git a/test/debugger/test-debugger-repl.js b/test/debugger/test-debugger-repl.js index 40639e0219..92c3c9a8a6 100644 --- a/test/debugger/test-debugger-repl.js +++ b/test/debugger/test-debugger-repl.js @@ -74,4 +74,13 @@ addTest('c', [ /\d/, /\d/, /\d/, /\d/, /\d/ ]); -addTest('quit', []); +// REPL and process.env regression +addTest('repl', [ + /Ctrl/ +]); + +addTest('for (var i in process.env) delete process.env[i]', []); + +addTest('process.env', [ + /\{\}/ +]);