From 8ece5f7aae0de5493be4bdae90d6c8100ee0a906 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 13 Dec 2019 14:17:32 +0100 Subject: [PATCH] BUG: string expand swallowing '$(..)' construct - this regression caused dynamic code with includes to fail since they often have -I$(LIB_SRC)/... content --- .../primitives/strings/stringOps/stringOps.C | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/OpenFOAM/primitives/strings/stringOps/stringOps.C b/src/OpenFOAM/primitives/strings/stringOps/stringOps.C index 848dee60b6..f0823bad14 100644 --- a/src/OpenFOAM/primitives/strings/stringOps/stringOps.C +++ b/src/OpenFOAM/primitives/strings/stringOps/stringOps.C @@ -537,7 +537,7 @@ static Foam::string recursiveExpand } else { - // Perhaps received something like '$[ ]' ? - pass through + // Something like '$()', '$[]', etc - pass through out += s[index]; // Append char } } @@ -654,8 +654,9 @@ static void expandString s.replace(replaceBeg, varBeg - replaceBeg, varValue); varBeg = replaceBeg+varValue.size(); } - else + else if (validVariableChar(s[varBeg+1])) { + // A regular $var expansion without surrounding {}. const auto varLen(findVariableLen(s, varBeg, sigil)); const word varName(s.substr(varBeg+1, varLen), false); @@ -674,6 +675,10 @@ static void expandString s.replace(varBeg, varName.size()+1, varValue); varBeg += varValue.size(); } + else + { + ++varBeg; + } } else { @@ -794,8 +799,8 @@ void Foam::stringOps::inplaceExpand } else if (varEnd == varBeg) { - // Parsed '${}' or $badChar - skip over - varBeg = varEnd + 1; + // Something like '$()', '$[]', etc - pass through + ++varBeg; } else {