File tree Expand file tree Collapse file tree 1 file changed +8
-6
lines changed
Expand file tree Collapse file tree 1 file changed +8
-6
lines changed Original file line number Diff line number Diff line change @@ -67,14 +67,16 @@ void node_napi_env__::EnqueueFinalizer(v8impl::RefTracker* finalizer) {
6767}
6868
6969void node_napi_env__::DrainFinalizerQueue () {
70- // As userland code can delete additional references in one finalizer,
71- // the list of pending finalizers may be mutated as we execute them, so
72- // we keep iterating it until it is empty.
73- while (!pending_finalizers.empty ()) {
74- v8impl::RefTracker* ref_tracker = *pending_finalizers.begin ();
75- pending_finalizers.erase (ref_tracker);
70+ decltype (pending_finalizers) current_finalizers;
71+ current_finalizers.swap (pending_finalizers);
72+
73+ for (auto * ref_tracker : current_finalizers) {
7674 ref_tracker->Finalize ();
7775 }
76+
77+ if (!pending_finalizers.empty ()) {
78+ DrainFinalizerQueue ();
79+ }
7880}
7981
8082void node_napi_env__::trigger_fatal_exception (v8::Local<v8::Value> local_err) {
You can’t perform that action at this time.
0 commit comments