diff options
-rw-r--r-- | Source/cmListCommand.cxx | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 826632f..93c6d66 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -527,26 +527,19 @@ bool cmListCommand::HandleRemoveAtCommand( removed.push_back(static_cast<size_t>(item)); } + std::sort(removed.begin(), removed.end()); + removed.erase(std::unique(removed.begin(), removed.end()), removed.end()); + + varArgsExpanded.erase(cmRemoveIndices(varArgsExpanded, removed), + varArgsExpanded.end()); + std::string value; const char* sep = ""; for ( cc = 0; cc < varArgsExpanded.size(); ++ cc ) { - size_t kk; - bool found = false; - for ( kk = 0; kk < removed.size(); ++ kk ) - { - if ( cc == removed[kk] ) - { - found = true; - } - } - - if ( !found ) - { - value += sep; - value += varArgsExpanded[cc]; - sep = ";"; - } + value += sep; + value += varArgsExpanded[cc]; + sep = ";"; } this->Makefile->AddDefinition(listName, value.c_str()); |