diff --git a/src/node_messaging.cc b/src/node_messaging.cc index fa7132d7b43a3d..16b1a97eec2dfc 100644 --- a/src/node_messaging.cc +++ b/src/node_messaging.cc @@ -494,8 +494,7 @@ void MessagePortData::Disentangle() { } MessagePort::~MessagePort() { - if (data_) - data_->owner_ = nullptr; + if (data_) Detach(); } MessagePort::MessagePort(Environment* env, @@ -692,10 +691,9 @@ void MessagePort::OnMessage() { void MessagePort::OnClose() { Debug(this, "MessagePort::OnClose()"); if (data_) { - data_->owner_ = nullptr; - data_->Disentangle(); + // Detach() returns move(data_). + Detach()->Disentangle(); } - data_.reset(); } std::unique_ptr MessagePort::Detach() {