summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-10-12 01:11:11 +0200
committerAnna Henningsen <anna@addaleax.net>2019-11-19 13:47:34 +0100
commit1317ac65b4f001588b86002aa22431719683beb4 (patch)
treede6fe6ec98b6fb8103b2e987783769fccf0930a9 /src
parenta489583eda4d7cebc06516834b31dc2a4cedb1b6 (diff)
downloadandroid-node-v8-1317ac65b4f001588b86002aa22431719683beb4.tar.gz
android-node-v8-1317ac65b4f001588b86002aa22431719683beb4.tar.bz2
android-node-v8-1317ac65b4f001588b86002aa22431719683beb4.zip
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 <jasnell@gmail.com> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> 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 <devnexen@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/handle_wrap.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/handle_wrap.cc b/src/handle_wrap.cc
index f3a3555754..198b0456e7 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())