File tree Expand file tree Collapse file tree 2 files changed +4
-6
lines changed
test/node-api/test_worker_terminate_finalization Expand file tree Collapse file tree 2 files changed +4
-6
lines changed Original file line number Diff line number Diff line change @@ -228,9 +228,10 @@ class RefBase : protected Finalizer, RefTracker {
228228 // from one of Unwrap or napi_delete_reference.
229229 //
230230 // When it is called from Unwrap or napi_delete_reference we only
231- // want to do the delete if the finalizer has already run or
232- // cannot have been queued to run (ie the reference count is > 0),
231+ // want to do the delete if there is no finalizer or the finalizer has already
232+ // run or cannot have been queued to run (i.e. the reference count is > 0),
233233 // otherwise we may crash when the finalizer does run.
234+ //
234235 // If the finalizer may have been queued and has not already run
235236 // delay the delete until the finalizer runs by not doing the delete
236237 // and setting _delete_self to true so that the finalizer will
@@ -242,6 +243,7 @@ class RefBase : protected Finalizer, RefTracker {
242243 static inline void Delete (RefBase* reference) {
243244 reference->Unlink ();
244245 if ((reference->RefCount () != 0 ) ||
246+ (reference->_finalize_callback == nullptr ) ||
245247 (reference->_delete_self ) ||
246248 (reference->_finalize_ran )) {
247249 delete reference;
Original file line number Diff line number Diff line change 11'use strict' ;
22const common = require ( '../../common' ) ;
33
4- // TODO(addaleax): Run this test once it stops failing under ASAN/valgrind.
5- // Refs: https://github.com/nodejs/node/issues/34731
6- common . skip ( 'Reference management in N-API leaks memory' ) ;
7-
84const { Worker, isMainThread } = require ( 'worker_threads' ) ;
95
106if ( isMainThread ) {
You can’t perform that action at this time.
0 commit comments