diff --git a/js/src/xpconnect/loader/mozJSComponentLoader.cpp b/js/src/xpconnect/loader/mozJSComponentLoader.cpp index 571fc802f94d..566e0f81ebb0 100644 --- a/js/src/xpconnect/loader/mozJSComponentLoader.cpp +++ b/js/src/xpconnect/loader/mozJSComponentLoader.cpp @@ -1136,20 +1136,25 @@ mozJSComponentLoader::GlobalForLocation(const char *aLocation, nsCOMPtr localFile = do_QueryInterface(component); - if (!localFile) - return nsnull; - char *location; // declare before first jump to out: jsval retval; nsXPIDLCString displayPath; FILE* fileHandle; + JSScript *script = nsnull; + if (!localFile) { + global = nsnull; + goto out; + } + localFile->GetURL(getter_Copies(displayPath)); rv = localFile->OpenANSIFileDesc("r", &fileHandle); - if (NS_FAILED(rv)) - return nsnull; + if (NS_FAILED(rv)) { + global = nsnull; + goto out; + } - JSScript *script = + script = JS_CompileFileHandleForPrincipals(cx, global, (const char *)displayPath, fileHandle, jsPrincipals);