Skip to content

Commit 75e28c5

Browse files
authored
napi: Fix weakref callback for wrap (#118)
1 parent 26adcc2 commit 75e28c5

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/node_jsvmapi.cc

+13-3
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,12 @@ namespace v8impl {
147147
_finalizeCallback(finalizeCallback),
148148
_finalizeData(finalizeData) {
149149
if (initialRefcount == 0) {
150-
_persistent.SetWeak(this, FinalizeCallback, v8::WeakCallbackType::kParameter);
150+
if (_finalizeCallback != nullptr || _deleteSelf) {
151+
_persistent.SetWeak(this, FinalizeCallback, v8::WeakCallbackType::kParameter);
152+
}
153+
else {
154+
_persistent.SetWeak();
155+
}
151156
_persistent.MarkIndependent();
152157
}
153158
}
@@ -172,7 +177,12 @@ namespace v8impl {
172177

173178
int Release() {
174179
if (--_refcount == 0) {
175-
_persistent.SetWeak(this, FinalizeCallback, v8::WeakCallbackType::kParameter);
180+
if (_finalizeCallback != nullptr || _deleteSelf) {
181+
_persistent.SetWeak(this, FinalizeCallback, v8::WeakCallbackType::kParameter);
182+
}
183+
else {
184+
_persistent.SetWeak();
185+
}
176186
_persistent.MarkIndependent();
177187
}
178188

@@ -721,7 +731,7 @@ napi_status napi_define_class(
721731
}
722732

723733
napi_status status = napi_define_properties(
724-
e, *result, staticDescriptors.size(), staticDescriptors.data());
734+
e, *result, static_cast<int>(staticDescriptors.size()), staticDescriptors.data());
725735
if (status != napi_ok) return status;
726736
}
727737

0 commit comments

Comments
 (0)