diff --git a/src/async_wrap.cc b/src/async_wrap.cc index 471fa231c2e861..52601ffc8f0c15 100644 --- a/src/async_wrap.cc +++ b/src/async_wrap.cc @@ -347,8 +347,13 @@ void AsyncWrap::WeakCallback(const v8::WeakCallbackInfo& info) { std::unique_ptr p{info.GetParameter()}; Local prop_bag = PersistentToLocal(info.GetIsolate(), p->propBag); + Local val; + + if (!prop_bag->Get(p->env->context(), p->env->destroyed_string()) + .ToLocal(&val)) { + return; + } - Local val = prop_bag->Get(p->env->destroyed_string()); if (val->IsFalse()) { AsyncWrap::EmitDestroy(p->env, p->asyncId); } diff --git a/src/env-inl.h b/src/env-inl.h index f0a8f2631f2398..6df74ba55a5da3 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -736,7 +736,7 @@ inline void Environment::SetMethod(v8::Local that, const v8::NewStringType type = v8::NewStringType::kInternalized; v8::Local name_string = v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(name_string, function); + that->Set(context, name_string, function).FromJust(); function->SetName(name_string); // NODE_SET_METHOD() compatibility. } @@ -756,7 +756,7 @@ inline void Environment::SetMethodNoSideEffect(v8::Local that, const v8::NewStringType type = v8::NewStringType::kInternalized; v8::Local name_string = v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked(); - that->Set(name_string, function); + that->Set(context, name_string, function).FromJust(); function->SetName(name_string); // NODE_SET_METHOD() compatibility. } diff --git a/src/node.h b/src/node.h index 5bbaa11def5c86..fbf9128be42429 100644 --- a/src/node.h +++ b/src/node.h @@ -369,7 +369,7 @@ inline void NODE_SET_METHOD(v8::Local recv, v8::Local fn_name = v8::String::NewFromUtf8(isolate, name, v8::NewStringType::kInternalized).ToLocalChecked(); fn->SetName(fn_name); - recv->Set(fn_name, fn); + recv->Set(context, fn_name, fn).FromJust(); } #define NODE_SET_METHOD node::NODE_SET_METHOD diff --git a/src/tls_wrap.cc b/src/tls_wrap.cc index 6bc152b2e24fca..1d982db28e2558 100644 --- a/src/tls_wrap.cc +++ b/src/tls_wrap.cc @@ -213,17 +213,22 @@ void TLSWrap::SSLInfoCallback(const SSL* ssl_, int where, int ret) { Local object = c->object(); if (where & SSL_CB_HANDSHAKE_START) { - Local callback = object->Get(env->onhandshakestart_string()); - if (callback->IsFunction()) { + Local callback; + + if (object->Get(env->context(), env->onhandshakestart_string()) + .ToLocal(&callback) && callback->IsFunction()) { Local argv[] = { env->GetNow() }; c->MakeCallback(callback.As(), arraysize(argv), argv); } } if (where & SSL_CB_HANDSHAKE_DONE) { + Local callback; + c->established_ = true; - Local callback = object->Get(env->onhandshakedone_string()); - if (callback->IsFunction()) { + + if (object->Get(env->context(), env->onhandshakedone_string()) + .ToLocal(&callback) && callback->IsFunction()) { c->MakeCallback(callback.As(), 0, nullptr); } } @@ -814,7 +819,10 @@ int TLSWrap::SelectSNIContextCallback(SSL* s, int* ad, void* arg) { // Call the SNI callback and use its return value as context Local object = p->object(); - Local ctx = object->Get(env->sni_context_string()); + Local ctx; + + if (!object->Get(env->context(), env->sni_context_string()).ToLocal(&ctx)) + return SSL_TLSEXT_ERR_NOACK; // Not an object, probably undefined or null if (!ctx->IsObject())