diff --git a/src/node_env_var.cc b/src/node_env_var.cc index c63cb2c37fb3e0..8b8594e88f3750 100644 --- a/src/node_env_var.cc +++ b/src/node_env_var.cc @@ -20,6 +20,7 @@ using v8::Name; using v8::NamedPropertyHandlerConfiguration; using v8::NewStringType; using v8::Nothing; +using v8::Null; using v8::Object; using v8::ObjectTemplate; using v8::PropertyCallbackInfo; @@ -353,6 +354,17 @@ MaybeLocal CreateEnvVarProxy(Local context, env_proxy_template->SetHandler(NamedPropertyHandlerConfiguration( EnvGetter, EnvSetter, EnvQuery, EnvDeleter, EnvEnumerator, data, PropertyHandlerFlags::kHasNoSideEffect)); - return scope.EscapeMaybe(env_proxy_template->NewInstance(context)); + + MaybeLocal env_proxy_ml = env_proxy_template->NewInstance(context); + Local env_proxy; + if (!env_proxy_ml.ToLocal(&env_proxy)) { + return MaybeLocal(); + } + + if (env_proxy->SetPrototype(context, Null(isolate)).IsNothing()) { + return MaybeLocal(); + } + + return scope.Escape(env_proxy); } } // namespace node