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:
Mark Olesen
2011-03-02 13:46:15 +01:00
parent e65f566d68
commit 01ea4623f9
3 changed files with 43 additions and 150 deletions

View File

@ -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
{