diff --git a/src/Evaluator/Evaluator.cpp b/src/Evaluator/Evaluator.cpp index 3885b18..8b27cff 100644 --- a/src/Evaluator/Evaluator.cpp +++ b/src/Evaluator/Evaluator.cpp @@ -22,6 +22,9 @@ void Evaluator::EvaluateBlockStatement(BoundBlockStatement* statement) { } void Evaluator::EvaluateExpressionStatement(BoundExpressionStatement *statement) { + // Delete previously saved value. + delete this->_scriptData->_lastValue; + // Save new value this->_scriptData->_lastValue = this -> EvaluateExpression(statement->GetExpression()); } diff --git a/src/Evaluator/Evaluator.hpp b/src/Evaluator/Evaluator.hpp index a14a556..ad9dce6 100644 --- a/src/Evaluator/Evaluator.hpp +++ b/src/Evaluator/Evaluator.hpp @@ -30,6 +30,7 @@ class Evaluator { public: Evaluator(Script* script){ _scriptData = script; + _result = nullptr; } void Evaluate(BoundScriptStatement* statement); diff --git a/src/Script.cpp b/src/Script.cpp index 4d32d97..60aea26 100644 --- a/src/Script.cpp +++ b/src/Script.cpp @@ -15,6 +15,8 @@ Script Script::Create(string script) { Script::Script() { Diagnostics = new class Diagnostics(); _evaluator = new Evaluator(this); + _lastValue = nullptr; + BoundScript = nullptr; } void Script::Evaluate() {