diff options
Diffstat (limited to 'src/bun.js/bindings/JSDOMWrapperCache.h')
-rw-r--r-- | src/bun.js/bindings/JSDOMWrapperCache.h | 4 |
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); |