summaryrefslogtreecommitdiff
path: root/dom/script
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2022-01-30 16:16:39 +0000
committerMoonchild <moonchild@palemoon.org>2022-01-30 16:16:39 +0000
commit87660b9ed452b709265a22bfa0b610645c32e447 (patch)
treea0cf1766f3888e492256d1168a88bae05900fc45 /dom/script
parentebd5d0893ef551afc4f8892313659d777a73504f (diff)
downloadaura-central-87660b9ed452b709265a22bfa0b610645c32e447.tar.gz
Issue %3058 - Try to deal with bad website scripting loading/unloading modules.
Apparently Bing does rapid-fire loading/unloading of module scripts that causes our attempts at resolving and initializing them to end up with null fetched modules. Returning null is probably a better way to handle this than crashing on ms->ModuleRecord().
Diffstat (limited to 'dom/script')
-rw-r--r--dom/script/ScriptLoader.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
index f669690ce..d2c5f5bd5 100644
--- a/dom/script/ScriptLoader.cpp
+++ b/dom/script/ScriptLoader.cpp
@@ -812,6 +812,10 @@ HostResolveImportedModule(JSContext* aCx, JS::Handle<JSObject*> aModule,
if (!string.init(aCx, aSpecifier)) {
return nullptr;
}
+ if (!aModule || !aCx) {
+ // Our module context was ripped out from under us...
+ return nullptr;
+ }
nsCOMPtr<nsIURI> uri = ResolveModuleSpecifier(script, string);
@@ -824,6 +828,10 @@ HostResolveImportedModule(JSContext* aCx, JS::Handle<JSObject*> aModule,
ModuleScript* ms = script->Loader()->GetFetchedModule(uri);
MOZ_ASSERT(ms, "Resolved module not found in module map");
+ if (!ms) {
+ // Already-resolved module has been removed from the map/unloaded...
+ return nullptr;
+ }
MOZ_ASSERT(!ms->HasParseError());
MOZ_ASSERT(ms->ModuleRecord());