From f983d8913b3293f0f328811d243222c6e19c795e Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 26 Apr 2015 15:49:43 +0200 Subject: [PATCH] cmDefinitions: Replace recursion with loop. --- Source/cmDefinitions.cxx | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx index c4d285a73..2ee2618d0 100644 --- a/Source/cmDefinitions.cxx +++ b/Source/cmDefinitions.cxx @@ -87,29 +87,27 @@ cmDefinitions cmDefinitions::MakeClosure() const void cmDefinitions::MakeClosure(std::set& undefined, cmDefinitions const* defs) { - // Consider local definitions. - for(MapType::const_iterator mi = defs->Map.begin(); - mi != defs->Map.end(); ++mi) + while(defs) { - // Use this key if it is not already set or unset. - if(this->Map.find(mi->first) == this->Map.end() && - undefined.find(mi->first) == undefined.end()) + // Consider local definitions. + for(MapType::const_iterator mi = defs->Map.begin(); + mi != defs->Map.end(); ++mi) { - if(mi->second.Exists) + // Use this key if it is not already set or unset. + if(this->Map.find(mi->first) == this->Map.end() && + undefined.find(mi->first) == undefined.end()) { - this->Map.insert(*mi); - } - else - { - undefined.insert(mi->first); + if(mi->second.Exists) + { + this->Map.insert(*mi); + } + else + { + undefined.insert(mi->first); + } } } - } - - // Traverse parents. - if(cmDefinitions const* up = defs->Up) - { - this->MakeClosure(undefined, up); + defs = defs->Up; } }