Issue #2686 - Don't rely on return value of ExecutionContext::Compile when the context may forbid running scripts

This is relevant if scripting is terminated due to execution timeout but there are setTimeout/Interval callbacks pending
or if scripting is disabled altogether.
This commit is contained in:
Martok 2025-01-26 21:46:31 +01:00 committed by roytam1
commit 0590764f1f
4 changed files with 12 additions and 8 deletions

View file

@ -12941,10 +12941,11 @@ nsGlobalWindow::RunTimeoutHandler(Timeout* aTimeout,
nsJSUtils::ExecutionContext exec(aes.cx(), global);
rv = exec.Compile(options, handler->GetHandlerText());
if (rv == NS_OK) {
JS::Rooted<JSScript*> script(aes.cx(), exec.GetScript());
if (script) {
LoadedScript* initiatingScript = handler->GetInitiatingScript();
if (initiatingScript) {
initiatingScript->AssociateWithScript(exec.GetScript());
initiatingScript->AssociateWithScript(script);
}
rv = exec.ExecScript();