Skip to content

Commit a696b8b

Browse files
committed
node-api: per-item finalizer queue drain for nested napi_ref deletion
1 parent 6102159 commit a696b8b

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/node_api.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,11 @@ void node_napi_env__::EnqueueFinalizer(v8impl::RefTracker* finalizer) {
114114

115115
void node_napi_env__::DrainFinalizerQueue() {
116116
// 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.
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)