diff --git a/Libraries/LibJS/Interpreter.cpp b/Libraries/LibJS/Interpreter.cpp index 1dd5cc46db..5c3b486fab 100644 --- a/Libraries/LibJS/Interpreter.cpp +++ b/Libraries/LibJS/Interpreter.cpp @@ -86,8 +86,11 @@ void Interpreter::enter_scope(const ScopeNode& scope_node, Vector argu void Interpreter::exit_scope(const ScopeNode& scope_node) { - while (m_scope_stack.last().scope_node.ptr() != &scope_node) - m_scope_stack.take_last(); + while (!m_scope_stack.is_empty()) { + auto popped_scope = m_scope_stack.take_last(); + if (popped_scope.scope_node.ptr() == &scope_node) + break; + } // If we unwind all the way, just reset m_unwind_until so that future "return" doesn't break. if (m_scope_stack.is_empty())