From d198e41f74d4b2b8be36fdfe945b6f739415658f Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 9 Jun 2021 18:19:11 +0200 Subject: [PATCH] LibJS: Stop bytecode execution after we've encountered an exception --- Userland/Libraries/LibJS/Bytecode/Interpreter.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp b/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp index 9bae427052..54ebd19c2a 100644 --- a/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp +++ b/Userland/Libraries/LibJS/Bytecode/Interpreter.cpp @@ -65,6 +65,8 @@ Value Interpreter::run(Executable const& executable) while (!pc.at_end()) { auto& instruction = *pc; instruction.execute(*this); + if (vm().exception()) + break; if (m_pending_jump.has_value()) { block = m_pending_jump.release_value(); will_jump = true; @@ -82,6 +84,9 @@ Value Interpreter::run(Executable const& executable) if (pc.at_end() && !will_jump) break; + + if (vm().exception()) + break; } dbgln_if(JS_BYTECODE_DEBUG, "Bytecode::Interpreter did run unit {:p}", &executable);