From 564c18e2140acd32f1c9d6ae4630d69706fa0528 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Sat, 12 Oct 2019 01:11:11 +0200 Subject: [PATCH] src: remove HandleWrap instances from list once closed This allows keeping `BaseObjectPtr`s to `HandleWrap` instances. Previously, the pointer kept the `HandleWrap` object alive, leaving the Environment cleanup code that waits for the handle list to drain in a busy loop, because only the `HandleWrap` destructor removed the item from the list. Refs: https://github.com/nodejs/quic/pull/165 Reviewed-By: James M Snell Reviewed-By: Daniel Bevenius PR-URL: https://github.com/nodejs/node/pull/30374 Refs: https://github.com/nodejs/quic/pull/141 Refs: https://github.com/nodejs/quic/pull/149 Refs: https://github.com/nodejs/quic/pull/141 Reviewed-By: David Carlier --- src/handle_wrap.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/handle_wrap.cc b/src/handle_wrap.cc index f3a355575412a2..198b0456e75751 100644 --- a/src/handle_wrap.cc +++ b/src/handle_wrap.cc @@ -128,6 +128,7 @@ void HandleWrap::OnClose(uv_handle_t* handle) { wrap->state_ = kClosed; wrap->OnClose(); + wrap->handle_wrap_queue_.Remove(); if (!wrap->persistent().IsEmpty() && wrap->object()->Has(env->context(), env->handle_onclose_symbol())