From f1fbf7044b558b049fe484f9fb7db53f12775025 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 25 May 2019 12:26:11 +0200 Subject: [PATCH] Fix issue when deleting script with no evalValue result --- src/Evaluator/Evaluator.cpp | 3 +++ src/Evaluator/Evaluator.hpp | 1 + src/Script.cpp | 2 ++ 3 files changed, 6 insertions(+) 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() {