From d37a4bca5dd23feabf0e4554a997a4b505b47f05 Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Mon, 31 Jul 2023 15:22:48 +0900 Subject: Support 1-byte metavariables --- lib/Core/ExecutionState.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/Core/ExecutionState.cpp b/lib/Core/ExecutionState.cpp index 9a39d2dc..270a3e16 100644 --- a/lib/Core/ExecutionState.cpp +++ b/lib/Core/ExecutionState.cpp @@ -402,13 +402,18 @@ std::string extractMetaEnvVar(ref e) { if (constant->isFalse()) // the else branch return extractMetaEnvVar(eq->right); - if (eq->right.get()->getKind() != Expr::Concat) - return ""; - const auto concat = dyn_cast(eq->right.get()); - if (concat->getLeft().get()->getKind() != Expr::Read) - return ""; + ReadExpr* read; + if (eq->right.get()->getKind() == Expr::Read) { + read = dyn_cast(eq->right.get()); + } else { + if (eq->right.get()->getKind() != Expr::Concat) + return ""; + const auto concat = dyn_cast(eq->right.get()); + if (concat->getLeft().get()->getKind() != Expr::Read) + return ""; + read = dyn_cast(concat->getLeft().get()); + } - const auto read = dyn_cast(concat->getLeft().get()); const auto& name = read->updates.root->name; // string::starts_with requires C++20 if (name.substr(0, 8) != "__choose") -- cgit 1.4.1