Skip to content

Commit 96e20c4

Browse files
committed
node-api: drain finalizer queue per-item to support nested napi_ref deletion
1 parent 6102159 commit 96e20c4

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/node_api.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ void node_napi_env__::EnqueueFinalizer(v8impl::RefTracker* finalizer) {
113113
}
114114

115115
void node_napi_env__::DrainFinalizerQueue() {
116-
// As userland code can delete additional references in one finalizer,
117-
// the list of pending finalizers may be mutated as we execute them, so
118-
// we keep iterating it until it is empty.
116+
// As userland code can delete additional references in one finalizer,
117+
// the list may grow while draining, so keep iterating until empty.
119118
while (!pending_finalizers.empty()) {
120-
v8impl::RefTracker* ref_tracker = *pending_finalizers.begin();
121-
pending_finalizers.erase(ref_tracker);
119+
auto it = pending_finalizers.begin();
120+
v8impl::RefTracker* ref_tracker = *it;
121+
pending_finalizers.erase(it);
122122
ref_tracker->Finalize();
123123
}
124124
}

0 commit comments

Comments
 (0)