From 9494865f99e04e3a39c6925a4909162ecbfed10d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 27 Mar 2020 11:34:58 +0100 Subject: [PATCH] LibJS: Actually pop frames off of the scope stack when exiting a scope --- Libraries/LibJS/Interpreter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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())