mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: string expand bombed out on first unknown construct
- eg,
"$USER $(PWD) $USER" -> "username $(PWD) $USER"
instead of
"$USER $(PWD) $USER" -> "username $(PWD) username"
this is noticable in some dynamicCode usages
STYLE: consolidate all string expand code into stringOps
This commit is contained in:
@ -93,7 +93,17 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
}
|
||||
}
|
||||
|
||||
if (endVar != string::npos && endVar != begVar)
|
||||
if (endVar == string::npos)
|
||||
{
|
||||
// likely parsed '${...' without closing '}' - abort
|
||||
break;
|
||||
}
|
||||
else if (endVar == begVar)
|
||||
{
|
||||
// parsed '${}' or $badChar - skip over
|
||||
begVar = endVar + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
const word varName
|
||||
(
|
||||
@ -128,10 +138,6 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -205,7 +211,17 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
}
|
||||
}
|
||||
|
||||
if (endVar != string::npos && endVar != begVar)
|
||||
if (endVar == string::npos)
|
||||
{
|
||||
// likely parsed '${...' without closing '}' - abort
|
||||
break;
|
||||
}
|
||||
else if (endVar == begVar)
|
||||
{
|
||||
// parsed '${}' or $badChar - skip over
|
||||
begVar = endVar + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
const word varName
|
||||
(
|
||||
@ -249,13 +265,9 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
else
|
||||
{
|
||||
// not defined - leave original string untouched
|
||||
begVar = endVar;
|
||||
begVar = endVar + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -320,7 +332,18 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
}
|
||||
}
|
||||
|
||||
if (endVar != string::npos && endVar != begVar)
|
||||
|
||||
if (endVar == string::npos)
|
||||
{
|
||||
// likely parsed '${...' without closing '}' - abort
|
||||
break;
|
||||
}
|
||||
else if (endVar == begVar)
|
||||
{
|
||||
// parsed '${}' or $badChar - skip over
|
||||
begVar = endVar + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
const word varName
|
||||
(
|
||||
@ -335,6 +358,7 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
const string varValue = getEnv(varName);
|
||||
if (varValue.size())
|
||||
{
|
||||
// direct replacement
|
||||
s.std::string::replace
|
||||
(
|
||||
begVar,
|
||||
@ -362,10 +386,6 @@ Foam::string& Foam::stringOps::inplaceExpand
|
||||
<< exit(FatalError);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user