about summary refs log tree commit diff homepage
path: root/lib/Core
diff options
context:
space:
mode:
authorLukas Wölfer <lukas.woelfer@rwth-aachen.de>2018-09-23 03:12:16 +0200
committerCristian Cadar <c.cadar@imperial.ac.uk>2018-09-30 21:45:17 +0100
commitf05935dc16bda1748d02a71cb0278fa4ec03c12b (patch)
treee8813785fd25f1c7c718900a8099baf31d5a3210 /lib/Core
parent40c1ab5c3d144cde0a513b708b6fb46f2ae1a0dd (diff)
downloadklee-f05935dc16bda1748d02a71cb0278fa4ec03c12b.tar.gz
Fix a crash when the last running state is terminated during merging
Diffstat (limited to 'lib/Core')
-rw-r--r--lib/Core/Executor.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp
index 04fd6941..3e37a6c6 100644
--- a/lib/Core/Executor.cpp
+++ b/lib/Core/Executor.cpp
@@ -2584,9 +2584,6 @@ void Executor::executeInstruction(ExecutionState &state, KInstruction *ki) {
 void Executor::updateStates(ExecutionState *current) {
   if (searcher) {
     searcher->update(current, addedStates, removedStates);
-    searcher->update(nullptr, continuedStates, pausedStates);
-    pausedStates.clear();
-    continuedStates.clear();
   }
   
   states.insert(addedStates.begin(), addedStates.end());
@@ -2607,6 +2604,12 @@ void Executor::updateStates(ExecutionState *current) {
     delete es;
   }
   removedStates.clear();
+
+  if (searcher) {
+    searcher->update(nullptr, continuedStates, pausedStates);
+    pausedStates.clear();
+    continuedStates.clear();
+  }
 }
 
 template <typename TypeIt>