From 4f92c65b24a01f06f1c5090bd43e548058b3ca11 Mon Sep 17 00:00:00 2001 From: Kevin Eady <8634912+KevinEady@users.noreply.github.com> Date: Mon, 16 Dec 2019 20:51:03 +0100 Subject: [PATCH 1/2] tsfn: Remove erroneous finalizer cleanup Removes leftover cleanup in finalizer that was part of the original TSFN implementation. Fixes: #632 --- napi-inl.h | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/napi-inl.h b/napi-inl.h index 8647cd8dc..b0f47ae3b 100644 --- a/napi-inl.h +++ b/napi-inl.h @@ -150,9 +150,6 @@ struct ThreadSafeFinalize { ThreadSafeFinalize* finalizeData = static_cast(rawFinalizeData); finalizeData->callback(Env(env)); - if (finalizeData->tsfn) { - *finalizeData->tsfn = nullptr; - } delete finalizeData; } @@ -166,9 +163,6 @@ struct ThreadSafeFinalize { ThreadSafeFinalize* finalizeData = static_cast(rawFinalizeData); finalizeData->callback(Env(env), finalizeData->data); - if (finalizeData->tsfn) { - *finalizeData->tsfn = nullptr; - } delete finalizeData; } @@ -182,9 +176,6 @@ struct ThreadSafeFinalize { ThreadSafeFinalize* finalizeData = static_cast(rawFinalizeData); finalizeData->callback(Env(env), static_cast(rawContext)); - if (finalizeData->tsfn) { - *finalizeData->tsfn = nullptr; - } delete finalizeData; } @@ -199,9 +190,6 @@ struct ThreadSafeFinalize { static_cast(rawFinalizeData); finalizeData->callback(Env(env), finalizeData->data, static_cast(rawContext)); - if (finalizeData->tsfn) { - *finalizeData->tsfn = nullptr; - } delete finalizeData; } From 60fc8e006552af0e71589ed94cc5b105d51ef2ec Mon Sep 17 00:00:00 2001 From: Kevin Eady <8634912+KevinEady@users.noreply.github.com> Date: Mon, 16 Dec 2019 21:34:10 +0100 Subject: [PATCH 2/2] Remove unnecessary tsfn member --- napi-inl.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/napi-inl.h b/napi-inl.h index b0f47ae3b..244bbce15 100644 --- a/napi-inl.h +++ b/napi-inl.h @@ -195,7 +195,6 @@ struct ThreadSafeFinalize { FinalizerDataType* data; Finalizer callback; - napi_threadsafe_function* tsfn; }; #endif @@ -4518,7 +4517,7 @@ inline ThreadSafeFunction ThreadSafeFunction::New(napi_env env, ThreadSafeFunction tsfn; auto* finalizeData = new details::ThreadSafeFinalize({ data, finalizeCallback, &tsfn._tsfn }); + FinalizerDataType>({ data, finalizeCallback }); napi_status status = napi_create_threadsafe_function(env, callback, resource, Value::From(env, resourceName), maxQueueSize, initialThreadCount, finalizeData, wrapper, context, CallJS, &tsfn._tsfn);