LibJS: Actually pop frames off of the scope stack when exiting a scope

This commit is contained in:
Andreas Kling 2020-03-27 11:34:58 +01:00
parent d52c5a94b4
commit 9494865f99
Notes: sideshowbarker 2024-07-19 08:06:42 +09:00

View file

@ -86,8 +86,11 @@ void Interpreter::enter_scope(const ScopeNode& scope_node, Vector<Argument> 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())