From 17b5ebd383df4c0c731b5c687ccaa3608b2d188f Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 11 Feb 2015 20:47:16 +0100 Subject: [PATCH] cmMacroCommand: Join the args strings outside of the loops. This means that we compute the strings even if not used in the macro but this shouldn't be expensive and it simplifies the code. --- Source/cmMacroCommand.cxx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 8f6364d7d..de52fc9ea 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -114,6 +114,10 @@ bool cmMacroHelperCommand::InvokeInitialPass // declare varuiables for ARGV ARGN but do not compute until needed std::string argvDef; std::string argnDef; + std::vector::const_iterator eit + = expandedArgs.begin() + (this->Args.size() - 1); + std::string expandedArgn = cmJoin(cmRange(eit, expandedArgs.end()), ";"); + std::string expandedArgv = cmJoin(expandedArgs, ";"); bool argnDefInitialized = false; bool argvDefInitialized = false; if(!this->Functions.empty()) @@ -170,9 +174,7 @@ bool cmMacroHelperCommand::InvokeInitialPass { argnDef += ";"; } - std::vector::const_iterator eit - = expandedArgs.begin() + (this->Args.size() - 1); - argnDef += cmJoin(cmRange(eit, expandedArgs.end()), ";"); + argnDef += expandedArgn; } argnDefInitialized = true; } @@ -192,7 +194,7 @@ bool cmMacroHelperCommand::InvokeInitialPass { argvDef += ";"; } - argvDef += cmJoin(expandedArgs, ";"); + argvDef += expandedArgv; argvDefInitialized = true; } cmSystemTools::ReplaceString(tmps, "${ARGV}", argvDef.c_str());