about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2023-11-30 08:44:50 +0900
committerNguyễn Gia Phong <cnx@loang.net>2024-03-05 17:53:28 +0900
commitc7b3ca819d5d68345f18f5ac9af7b43ca486ceb8 (patch)
treecfe97e26f7526261c04ea3428068a6fbaed810d0
parent09053680920989425469b0b7df3401c8cac38942 (diff)
downloadklee-c7b3ca819d5d68345f18f5ac9af7b43ca486ceb8.tar.gz
Relax revision combination check
-rw-r--r--lib/Core/Executor.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp
index 279d5f3a..465100f4 100644
--- a/lib/Core/Executor.cpp
+++ b/lib/Core/Executor.cpp
@@ -1238,14 +1238,13 @@ Executor::StatePair Executor::fork(ExecutionState &current, ref<Expr> condition,
 void Executor::addConstraint(ExecutionState &state, ref<Expr> condition) {
   const auto& [isMeta, patchNo] = Differentiator::extractPatchNumber(condition);
   if (isMeta) {
-    if (state.patchNo && patchNo != state.patchNo) {
+    if (state.patchNo && patchNo && patchNo != state.patchNo) {
       terminateStateEarly(state, "ignore patch combination",
                           StateTerminationType::SilentExit);
       return;
     }
     state.patchLocs++;
-    if (!state.patchNo)
-      differ.revisions.insert(state.patchNo = patchNo);
+    differ.revisions.insert(state.patchNo |= patchNo);
     return;
   }