aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/bindings/napi.cpp1
-rw-r--r--src/napi/napi.zig3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp
index bebdd5134..7b8963b2c 100644
--- a/src/bun.js/bindings/napi.cpp
+++ b/src/bun.js/bindings/napi.cpp
@@ -812,7 +812,6 @@ extern "C" napi_status napi_create_reference(napi_env env, napi_value value,
if (NapiPrototype* object = jsDynamicCast<NapiPrototype*>(val)) {
object->napiRef = ref;
- return napi_invalid_arg;
}
*result = toNapi(ref);
diff --git a/src/napi/napi.zig b/src/napi/napi.zig
index 79ead95f5..103f8dccd 100644
--- a/src/napi/napi.zig
+++ b/src/napi/napi.zig
@@ -1372,6 +1372,9 @@ pub export fn napi_create_threadsafe_function(
) napi_status {
// TODO: don't do this
// just have a GC hook for this...
+ if (func.isEmptyOrUndefinedOrNull() or !func.isCallable(env.vm())) {
+ return napi_status.function_expected;
+ }
JSC.C.JSValueProtect(env.ref(), func.asObjectRef());
var function = bun.default_allocator.create(ThreadSafeFunction) catch return .generic_failure;
function.* = .{