From ccdf7e04d451ac9fa877835d7c167b8bbda70686 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 30 Oct 2013 19:12:28 -0400 Subject: 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. --- Source/cmMacroCommand.cxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index eda82dd..499d3c6 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -140,6 +140,12 @@ bool cmMacroHelperCommand::InvokeInitialPass // Set the FilePath on the arguments to match the function since it is // not stored and the original values may be freed k->FilePath = this->FilePath.c_str(); + if(k->Delim == cmListFileArgument::Bracket) + { + arg.Value = k->Value; + } + else + { tmps = k->Value; // replace formal arguments for (unsigned int j = 1; j < this->Args.size(); ++j) @@ -209,6 +215,7 @@ bool cmMacroHelperCommand::InvokeInitialPass } arg.Value = tmps; + } arg.Delim = k->Delim; arg.FilePath = k->FilePath; arg.Line = k->Line; -- cgit v0.12