From 3cfe7a4ca876c496f9b491e4175fd1c9be24f3d7 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 15 Feb 2015 16:00:54 +0100 Subject: [PATCH] cmListCommand: Implement REMOVE_ITEM in terms of cmRemoveMatching. --- Source/cmListCommand.cxx | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 592681b27..50adce6fe 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -355,23 +355,13 @@ bool cmListCommand return false; } - size_t cc; - for ( cc = 2; cc < args.size(); ++ cc ) - { - size_t kk = 0; - while ( kk < varArgsExpanded.size() ) - { - if ( varArgsExpanded[kk] == args[cc] ) - { - varArgsExpanded.erase(varArgsExpanded.begin()+kk); - } - else - { - kk ++; - } - } - } + std::vector remove(args.begin() + 2, args.end()); + std::sort(remove.begin(), remove.end()); + remove.erase(std::unique(remove.begin(), remove.end()), remove.end()); + varArgsExpanded.erase( + cmRemoveMatching(varArgsExpanded, remove), + varArgsExpanded.end()); std::string value = cmJoin(varArgsExpanded, ";"); this->Makefile->AddDefinition(listName, value.c_str());