diff --git a/napi-inl.h b/napi-inl.h index 2b03e5ba8..c07b4ca22 100644 --- a/napi-inl.h +++ b/napi-inl.h @@ -326,8 +326,8 @@ inline Value Env::RunScript(String script) { template fini> inline void Env::SetInstanceData(T* data) { napi_status status = - napi_set_instance_data(_env, data, [](napi_env, void* data, void*) { - fini(static_cast(data)); + napi_set_instance_data(_env, data, [](napi_env env, void* data, void*) { + fini(env, static_cast(data)); }, nullptr); NAPI_THROW_IF_FAILED_VOID(_env, status); } @@ -342,7 +342,7 @@ inline T* Env::GetInstanceData() { return static_cast(data); } -template void Env::DefaultFini(T* data) { +template void Env::DefaultFini(Env, T* data) { delete data; } #endif // NAPI_VERSION > 5 diff --git a/napi.h b/napi.h index c14c7f301..59a02f51c 100644 --- a/napi.h +++ b/napi.h @@ -174,7 +174,9 @@ namespace Napi { class Env { #if NAPI_VERSION > 5 private: - template static void DefaultFini(T* data); + template static void DefaultFini(Env, T* data); + template + static void DefaultFiniWithHint(Env, DataType* data, HintType* hint); #endif // NAPI_VERSION > 5 public: Env(napi_env env); @@ -193,10 +195,11 @@ namespace Napi { Value RunScript(String script); #if NAPI_VERSION > 5 - template using Finalizer = void (*)(T*); + template T* GetInstanceData(); + + template using Finalizer = void (*)(Env, T*); template fini = Env::DefaultFini> void SetInstanceData(T* data); - template T* GetInstanceData(); #endif // NAPI_VERSION > 5 private: