From 19e2f0fbf98973402476dba9409f3963c141ae67 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sun, 30 Jan 2022 16:16:39 +0000 Subject: [PATCH] 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(). --- dom/script/ScriptLoader.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp index 5b7bea8d22..0fdde1f9d6 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp @@ -812,6 +812,10 @@ HostResolveImportedModule(JSContext* aCx, JS::Handle aModule, if (!string.init(aCx, aSpecifier)) { return nullptr; } + if (!aModule || !aCx) { + // Our module context was ripped out from under us... + return nullptr; + } nsCOMPtr uri = ResolveModuleSpecifier(script, string); @@ -824,6 +828,10 @@ HostResolveImportedModule(JSContext* aCx, JS::Handle 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());