@@ -147,7 +147,12 @@ namespace v8impl {
147
147
_finalizeCallback(finalizeCallback),
148
148
_finalizeData(finalizeData) {
149
149
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
+ }
151
156
_persistent.MarkIndependent ();
152
157
}
153
158
}
@@ -172,7 +177,12 @@ namespace v8impl {
172
177
173
178
int Release () {
174
179
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
+ }
176
186
_persistent.MarkIndependent ();
177
187
}
178
188
@@ -721,7 +731,7 @@ napi_status napi_define_class(
721
731
}
722
732
723
733
napi_status status = napi_define_properties (
724
- e, *result, staticDescriptors.size (), staticDescriptors.data ());
734
+ e, *result, static_cast < int >( staticDescriptors.size () ), staticDescriptors.data ());
725
735
if (status != napi_ok) return status;
726
736
}
727
737
0 commit comments