From 7aab4b0a959f451f7da9ae42745526e10d716ee8 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 24 Apr 2024 23:41:58 +0200 Subject: [PATCH] Clear symbol tables when `exit` is explicitly called in scripts --- src/language/PugsParser.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp index f710ebe9e..77bcd91f5 100644 --- a/src/language/PugsParser.cpp +++ b/src/language/PugsParser.cpp @@ -39,6 +39,15 @@ #include <unordered_map> #include <variant> +void +clear_symbol_tables(std::unique_ptr<ASTNode>& node) +{ + for (auto& child : node->children) { + clear_symbol_tables(child); + } + node->m_symbol_table->clearValues(); +} + void parser(const std::string& filename) { @@ -96,6 +105,7 @@ parser(const std::string& filename) } catch (language::Exit& e) { ExecutionStatManager::getInstance().setExitCode(e.code()); + clear_symbol_tables(root_node); } root_node->m_symbol_table->clearValues(); -- GitLab