macro: Do not substitute for placeholders in bracket arguments

Fix the macro command implementation to avoid substituting macro
placeholders in bracket arguments recorded inside the macro block.
This commit is contained in:
Brad King 2013-10-30 19:12:28 -04:00
parent 999abb993e
commit ccdf7e04d4
1 changed files with 7 additions and 0 deletions

View File

@ -140,6 +140,12 @@ bool cmMacroHelperCommand::InvokeInitialPass
// Set the FilePath on the arguments to match the function since it is // Set the FilePath on the arguments to match the function since it is
// not stored and the original values may be freed // not stored and the original values may be freed
k->FilePath = this->FilePath.c_str(); k->FilePath = this->FilePath.c_str();
if(k->Delim == cmListFileArgument::Bracket)
{
arg.Value = k->Value;
}
else
{
tmps = k->Value; tmps = k->Value;
// replace formal arguments // replace formal arguments
for (unsigned int j = 1; j < this->Args.size(); ++j) for (unsigned int j = 1; j < this->Args.size(); ++j)
@ -209,6 +215,7 @@ bool cmMacroHelperCommand::InvokeInitialPass
} }
arg.Value = tmps; arg.Value = tmps;
}
arg.Delim = k->Delim; arg.Delim = k->Delim;
arg.FilePath = k->FilePath; arg.FilePath = k->FilePath;
arg.Line = k->Line; arg.Line = k->Line;