From b2d5c305bb6d4b2512171bd7601a31cb632f88a7 Mon Sep 17 00:00:00 2001
From: clc5q <clc5q@git.zephyr-software.com>
Date: Wed, 23 Aug 2017 21:23:23 +0000
Subject: [PATCH] Fix double free in Reduced mode.

Former-commit-id: f94101f9f43c0609a773dd54bf9c8570932f75fe
---
 src/base/SMPFunction.cpp | 2 ++
 src/base/SMPInstr.cpp    | 6 ++++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp
index ae0860c6..fc373ec5 100644
--- a/src/base/SMPFunction.cpp
+++ b/src/base/SMPFunction.cpp
@@ -14133,6 +14133,8 @@ void SMPFunction::EmitAnnotations(FILE *AnnotFile, FILE *InfoAnnotFile) {
 			if (NULL != CurrBlock) delete CurrBlock;
 		}
 
+		this->Instrs.clear();
+		this->Blocks.clear();
 		return;
 	} // end if reduced analysis
 
diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp
index f9493eeb..e93ab8de 100644
--- a/src/base/SMPInstr.cpp
+++ b/src/base/SMPInstr.cpp
@@ -4399,8 +4399,10 @@ SMPInstr::SMPInstr(STARS_ea_t addr) : STARS_ID(addr) {
 
 // Destructor.
 SMPInstr::~SMPInstr() {
-	this->Defs.clear();
-	this->Uses.clear();
+	if (global_STARS_program->ShouldSTARSPerformFullAnalysis()) { // not already deleted
+		this->Defs.clear();
+		this->Uses.clear();
+	}
 	return;
 }
 
-- 
GitLab