From db0a48d34c3dfa689a2e284cc282a49785647cd0 Mon Sep 17 00:00:00 2001 From: davidot Date: Wed, 8 Sep 2021 20:46:11 +0200 Subject: LibJS: Restore the environment if an exception is thrown in 'with' block --- Userland/Libraries/LibJS/AST.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Userland/Libraries/LibJS/AST.cpp') diff --git a/Userland/Libraries/LibJS/AST.cpp b/Userland/Libraries/LibJS/AST.cpp index 80dd4f6448..658d5b6081 100644 --- a/Userland/Libraries/LibJS/AST.cpp +++ b/Userland/Libraries/LibJS/AST.cpp @@ -379,12 +379,13 @@ Value WithStatement::execute(Interpreter& interpreter, GlobalObject& global_obje // 6. Let C be the result of evaluating Statement. auto result = interpreter.execute_statement(global_object, m_body).value_or(js_undefined()); - if (interpreter.exception()) - return {}; // 7. Set the running execution context's LexicalEnvironment to oldEnv. interpreter.vm().running_execution_context().lexical_environment = old_environment; + if (interpreter.exception()) + return {}; + // 8. Return Completion(UpdateEmpty(C, undefined)). return result; } -- cgit v1.2.3