aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/napi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/napi.cpp')
-rw-r--r--src/bun.js/bindings/napi.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp
index abd603c41..f4897db43 100644
--- a/src/bun.js/bindings/napi.cpp
+++ b/src/bun.js/bindings/napi.cpp
@@ -132,13 +132,15 @@ void NapiRef::unref()
bool clear = refCount == 1;
refCount = refCount > 0 ? refCount - 1 : 0;
if (clear) {
- JSC::JSValue val = strongRef.get();
- if (val.isString()) {
- weakValueRef.setString(val.toString(globalObject.get()), weakValueHandleOwner(), this);
- } else if (val.isObject()) {
- weakValueRef.setObject(val.getObject(), weakValueHandleOwner(), this);
- } else {
- weakValueRef.setPrimitive(val);
+ if (JSC::JSValue val = strongRef.get()) {
+
+ if (val.isString()) {
+ weakValueRef.setString(val.toString(globalObject.get()), weakValueHandleOwner(), this);
+ } else if (val.isObject()) {
+ weakValueRef.setObject(val.getObject(), weakValueHandleOwner(), this);
+ } else {
+ weakValueRef.setPrimitive(val);
+ }
}
strongRef.clear();
}
@@ -717,8 +719,7 @@ extern "C" napi_status napi_create_reference(napi_env env, napi_value value,
JSC::JSValue val = toJS(value);
- if (!val.isObject()) {
-
+ if (!val || !val.isObject()) {
return napi_object_expected;
}