fix: require.extensions uses Strong instead of being clever (#19231)

This commit is contained in:
chloe caruso
2025-04-23 17:52:41 -07:00
committed by GitHub
parent 1294128b47
commit 80aff24951
41 changed files with 254 additions and 315 deletions

View File

@@ -575,13 +575,10 @@ void evaluateCommonJSCustomExtension(
JSCommonJSModule* target,
String filename,
JSValue filenameValue,
uint32_t extensionIndex)
JSValue extension)
{
auto& vm = globalObject->vm();
auto scope = DECLARE_THROW_SCOPE(vm);
Bun::JSCommonJSExtensions* extensions = globalObject->lazyRequireExtensionsObject();
JSValue extension = extensions->m_registeredFunctions[extensionIndex].get();
if (!extension) {
throwTypeError(globalObject, scope, makeString("require.extension is not a function"_s));
return;
@@ -793,7 +790,7 @@ JSValue fetchCommonJSModuleNonBuiltin(
JSC::throwException(globalObject, scope, JSC::createSyntaxError(globalObject, "Recursive extension. This is a bug in Bun"_s));
RELEASE_AND_RETURN(scope, {});
}
evaluateCommonJSCustomExtension(globalObject, target, specifierWtfString, specifierValue, res->result.value.cjsCustomExtensionIndex);
evaluateCommonJSCustomExtension(globalObject, target, specifierWtfString, specifierValue, JSC::JSValue::decode(res->result.value.cjsCustomExtension));
RETURN_IF_EXCEPTION(scope, {});
RELEASE_AND_RETURN(scope, target);
}