Skip to content

Commit 823bbf7

Browse files
committed
Reference::Finalize/RefBase::Finalize was generalized
See nodejs#44141
1 parent 91ecea7 commit 823bbf7

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

src/js_native_api_v8.cc

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@ class ArrayBufferReference final : public Reference {
339339
explicit ArrayBufferReference(napi_env env,
340340
v8::Local<v8::ArrayBuffer> value,
341341
Args&&... args)
342-
: Reference(env, value, std::forward<Args>(args)...) {}
342+
: Reference(env, value, std::forward<Args>(args)...),
343+
_env(env) {}
343344

344345
template <typename... Args>
345346
static ArrayBufferReference* New(napi_env env,
@@ -349,18 +350,18 @@ class ArrayBufferReference final : public Reference {
349350
}
350351

351352
private:
352-
inline void Finalize(bool is_env_teardown) override {
353-
if (is_env_teardown) {
354-
v8::HandleScope handle_scope(_env->isolate);
355-
v8::Local<v8::Value> obj = Get();
356-
CHECK(!obj.IsEmpty());
357-
CHECK(obj->IsArrayBuffer());
358-
v8::Local<v8::ArrayBuffer> ab = obj.As<v8::ArrayBuffer>();
359-
if (ab->IsDetachable())
360-
ab->Detach();
361-
}
362-
363-
Reference::Finalize(is_env_teardown);
353+
napi_env _env;
354+
355+
inline void Finalize() override {
356+
v8::HandleScope handle_scope(_env->isolate);
357+
v8::Local<v8::Value> obj = Get();
358+
CHECK(!obj.IsEmpty());
359+
CHECK(obj->IsArrayBuffer());
360+
v8::Local<v8::ArrayBuffer> ab = obj.As<v8::ArrayBuffer>();
361+
if (ab->IsDetachable())
362+
ab->Detach();
363+
364+
Reference::Finalize();
364365
}
365366
};
366367
#endif

0 commit comments

Comments
 (0)