diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 107dca938..8d1657d82 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -254,14 +254,18 @@ bool cmListCommand::HandleAppendCommand(std::vector const& args) // expand the variable std::string listString; this->GetListString(listString, listName); + + if(!listString.empty() && !args.empty()) + { + listString += ";"; + } + const char* sep = ""; size_t cc; for ( cc = 2; cc < args.size(); ++ cc ) { - if(!listString.empty()) - { - listString += ";"; - } + listString += sep; listString += args[cc]; + sep = ";"; } this->Makefile->AddDefinition(listName, listString.c_str()); diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 7afe05fa3..05d8ab5f9 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -3011,13 +3011,17 @@ cmLocalGenerator::ConvertToRelativePath(const std::vector& local, // trailing slash in the input then the last iteration of the loop // will add a slash followed by an empty string which will preserve // the trailing slash in the output. + + if(!relative.empty() && !remote.empty()) + { + relative += "/"; + } + const char* sep = ""; for(unsigned int i=common; i < remote.size(); ++i) { - if(!relative.empty()) - { - relative += "/"; - } + relative += sep; relative += remote[i]; + sep = "/"; } // Finally return the path. diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 657e75014..81aaf3ec1 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -166,15 +166,17 @@ bool cmMacroHelperCommand::InvokeInitialPass { if (expandedArgs.size() > this->Args.size() - 1) { + if (!argnDef.empty() && !expandedArgs.empty()) + { + argnDef += ";"; + } std::vector::const_iterator eit = expandedArgs.begin() + (this->Args.size() - 1); + const char* sep = ""; for( ; eit != expandedArgs.end(); ++eit) { - if (!argnDef.empty()) - { - argnDef += ";"; - } - argnDef += *eit; + argnDef += sep + *eit; + sep = ";"; } } argnDefInitialized = true; @@ -191,14 +193,17 @@ bool cmMacroHelperCommand::InvokeInitialPass // repleace ARGV, compute it only once if (!argvDefInitialized) { + if (!argvDef.empty() && !expandedArgs.empty()) + { + argvDef += ";"; + } + const char* sep = ""; std::vector::const_iterator eit; for(eit = expandedArgs.begin(); eit != expandedArgs.end(); ++eit) { - if (!argvDef.empty()) - { - argvDef += ";"; - } + argvDef += sep; argvDef += *eit; + sep = ";"; } argvDefInitialized = true; }