diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 3b8a5ff51b54ab..e7a16401369f42 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -220,6 +220,8 @@ class RefBase : protected Finalizer, RefTracker { finalize_hint); } + virtual ~RefBase() { Unlink(); } + inline void* Data() { return _finalize_data; } @@ -240,7 +242,6 @@ class RefBase : protected Finalizer, RefTracker { // the finalizer and _delete_self is set. In this case we // know we need to do the deletion so just do it. static inline void Delete(RefBase* reference) { - reference->Unlink(); if ((reference->RefCount() != 0) || (reference->_delete_self) || (reference->_finalize_ran)) { diff --git a/test/node-api/test_worker_terminate_finalization/test.js b/test/node-api/test_worker_terminate_finalization/test.js index 171a32b812334f..937079968f722a 100644 --- a/test/node-api/test_worker_terminate_finalization/test.js +++ b/test/node-api/test_worker_terminate_finalization/test.js @@ -1,11 +1,9 @@ 'use strict'; const common = require('../../common'); -// TODO(addaleax): Run this test once it stops failing under ASAN/valgrind. // Refs: https://github.com/nodejs/node/issues/34731 // Refs: https://github.com/nodejs/node/pull/35777 // Refs: https://github.com/nodejs/node/issues/35778 -common.skip('Reference management in N-API leaks memory'); const { Worker, isMainThread } = require('worker_threads');