From 1cecd3a53107f7f670cf011201c1da3a33b795b6 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 24 Jan 2015 18:43:37 +0100 Subject: [PATCH] cmListCommand: Use std::find algorithm for FIND subcommand. Use a ostringstream to account for the input being a variable of type size_t as a result of using std::distance. There is no single format string which portably accepts a size_t. --- Source/cmListCommand.cxx | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index dd0cfa9d2..ae13fdf98 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -284,18 +284,14 @@ bool cmListCommand::HandleFindCommand(std::vector const& args) return true; } - std::vector::iterator it; - unsigned int index = 0; - for ( it = varArgsExpanded.begin(); it != varArgsExpanded.end(); ++ it ) + std::vector::iterator it = + std::find(varArgsExpanded.begin(), varArgsExpanded.end(), args[2]); + if (it != varArgsExpanded.end()) { - if ( *it == args[2] ) - { - char indexString[32]; - sprintf(indexString, "%d", index); - this->Makefile->AddDefinition(variableName, indexString); - return true; - } - index++; + std::ostringstream indexStream; + indexStream << std::distance(varArgsExpanded.begin(), it); + this->Makefile->AddDefinition(variableName, indexStream.str().c_str()); + return true; } this->Makefile->AddDefinition(variableName, "-1");