src: use unique_ptr for obj in SetWeak lambda
PR-URL: https://github.com/nodejs/node/pull/23117 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
1be804d625
commit
7ac109df10
@ -95,13 +95,12 @@ void BaseObject::MakeWeak() {
|
|||||||
persistent_handle_.SetWeak(
|
persistent_handle_.SetWeak(
|
||||||
this,
|
this,
|
||||||
[](const v8::WeakCallbackInfo<BaseObject>& data) {
|
[](const v8::WeakCallbackInfo<BaseObject>& data) {
|
||||||
BaseObject* obj = data.GetParameter();
|
std::unique_ptr<BaseObject> obj(data.GetParameter());
|
||||||
// Clear the persistent handle so that ~BaseObject() doesn't attempt
|
// Clear the persistent handle so that ~BaseObject() doesn't attempt
|
||||||
// to mess with internal fields, since the JS object may have
|
// to mess with internal fields, since the JS object may have
|
||||||
// transitioned into an invalid state.
|
// transitioned into an invalid state.
|
||||||
// Refs: https://github.com/nodejs/node/issues/18897
|
// Refs: https://github.com/nodejs/node/issues/18897
|
||||||
obj->persistent_handle_.Reset();
|
obj->persistent_handle_.Reset();
|
||||||
delete obj;
|
|
||||||
}, v8::WeakCallbackType::kParameter);
|
}, v8::WeakCallbackType::kParameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user