From bf32b95efed986eed7f5e0c568c5bc9559bcb854 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 1 Sep 2015 13:39:55 -0400 Subject: [PATCH] cmFindLibraryCommand: Avoid repeating search for the same name In FindNormalLibraryDirsPerName we consider one name at a time and search the entire path. Avoid repeated consideration of names by removing each one from the list of candidates before considering the next one. This will not change behavior because we already know the earlier candidates were not found on repeated considering anyway. --- Source/cmFindLibraryCommand.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index e8d158ebb..e7696af40 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -203,6 +203,7 @@ struct cmFindLibraryHelper } bool HasValidSuffix(std::string const& name); void AddName(std::string const& name); + void SetName(std::string const& name); bool CheckDirectory(std::string const& path); bool CheckDirectoryForName(std::string const& path, Name& name); }; @@ -321,6 +322,13 @@ void cmFindLibraryHelper::AddName(std::string const& name) this->Names.push_back(entry); } +//---------------------------------------------------------------------------- +void cmFindLibraryHelper::SetName(std::string const& name) +{ + this->Names.clear(); + this->AddName(name); +} + //---------------------------------------------------------------------------- bool cmFindLibraryHelper::CheckDirectory(std::string const& path) { @@ -459,8 +467,7 @@ std::string cmFindLibraryCommand::FindNormalLibraryDirsPerName() ni != this->Names.end() ; ++ni) { // Switch to searching for this name. - std::string const& name = *ni; - helper.AddName(name); + helper.SetName(*ni); // Search every directory. for(std::vector::const_iterator