aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/JSDOMWrapperCache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/JSDOMWrapperCache.h')
-rw-r--r--src/bun.js/bindings/JSDOMWrapperCache.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/bun.js/bindings/JSDOMWrapperCache.h b/src/bun.js/bindings/JSDOMWrapperCache.h
index 7656c7c17..e06f2607d 100644
--- a/src/bun.js/bindings/JSDOMWrapperCache.h
+++ b/src/bun.js/bindings/JSDOMWrapperCache.h
@@ -215,6 +215,10 @@ template<typename DOMClass> inline void setSubclassStructureIfNeeded(JSC::JSGlob
JSC::VM& vm = lexicalGlobalObject->vm();
auto scope = DECLARE_THROW_SCOPE(vm);
+ // If the new target isn't actually callable
+ if (UNLIKELY(!newTarget->isCallable()))
+ newTarget = constructor;
+
auto* functionGlobalObject = JSC::getFunctionRealm(lexicalGlobalObject, newTarget);
RETURN_IF_EXCEPTION(scope, void());
auto* newTargetGlobalObject = JSC::jsCast<JSDOMGlobalObject*>(functionGlobalObject);