about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorNguyễn Gia Phong <cnx@loang.net>2023-08-18 17:48:08 +0900
committerNguyễn Gia Phong <cnx@loang.net>2024-03-05 17:27:16 +0900
commit8d0c0a182ccba76bf25d2f026806344341b1a60f (patch)
tree8a56a24afa8464b5e18ac5f683eef42de9f57735
parent43caf23572d4d7e56c094c7dd80998b6a27356c6 (diff)
downloadklee-8d0c0a182ccba76bf25d2f026806344341b1a60f.tar.gz
Fix metavar detection false negative
-rw-r--r--lib/Core/ExecutionState.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/lib/Core/ExecutionState.cpp b/lib/Core/ExecutionState.cpp
index 270a3e16..1e45812c 100644
--- a/lib/Core/ExecutionState.cpp
+++ b/lib/Core/ExecutionState.cpp
@@ -415,12 +415,9 @@ std::string extractMetaEnvVar(ref<Expr> e) {
   }
 
   const auto& name = read->updates.root->name;
-  // string::starts_with requires C++20
-  if (name.substr(0, 8) != "__choose")
+  // Skip __choose\d.*
+  if (name.substr(0, 8) != "__choose" || '0' > name[8] || name[8] > '9')
     return "";
-  for (const auto c : name.substr(8))
-    if ('0' > c || c > '9')
-      return "";
   std::string value;
   constant->toString(value);
   return "__SWITCH" + name.substr(8, name.size() - 8) + "=" + value;