From cffa2f2980c6472a87a74abedc4766753cb460ce Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Tue, 9 Jan 2024 00:30:22 +0100
Subject: [PATCH] Fix storage of non initialized variables

---
 src/language/utils/SymbolTable.hpp     | 4 ++--
 src/utils/checkpointing/Checkpoint.cpp | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/language/utils/SymbolTable.hpp b/src/language/utils/SymbolTable.hpp
index 38351f7ec..658c3a2be 100644
--- a/src/language/utils/SymbolTable.hpp
+++ b/src/language/utils/SymbolTable.hpp
@@ -314,7 +314,7 @@ class SymbolTable
   }
 
   std::vector<Symbol>
-  getBuiltinFunctionSymbolList(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position)
+  getBuiltinFunctionSymbolList(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position) const
   {
     std::vector<Symbol> builtin_function_symbol_list;
 
@@ -338,7 +338,7 @@ class SymbolTable
   }
 
   bool
-  has(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position)
+  has(const std::string& symbol, const TAO_PEGTL_NAMESPACE::position& use_position) const
   {
     for (auto i_stored_symbol : m_symbol_list) {
       // Symbol must be defined before the call
diff --git a/src/utils/checkpointing/Checkpoint.cpp b/src/utils/checkpointing/Checkpoint.cpp
index 16ea2d830..10c338fc4 100644
--- a/src/utils/checkpointing/Checkpoint.cpp
+++ b/src/utils/checkpointing/Checkpoint.cpp
@@ -54,7 +54,8 @@ checkpoint()
         break;
       }
       default: {
-        if ((symbol.attributes().dataType() != ASTNodeDataType::builtin_function_t) and
+        if ((symbol_table.has(symbol.name(), ASTExecutionStack::getInstance().currentNode().begin())) and
+            (symbol.attributes().dataType() != ASTNodeDataType::builtin_function_t) and
             (not symbol.attributes().isModuleVariable())) {
           std::visit(
             [&](auto&& data) {
-- 
GitLab