From 2cf217fb641d79973867976b2b1c39267d157e87 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Wed, 23 Jan 2019 23:09:44 +0100 Subject: [PATCH] ConvertObj: make module sorting deterministic --- ConvertObj/ConvertObj.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ConvertObj/ConvertObj.cc b/ConvertObj/ConvertObj.cc index f7f9b1e4c4..40ff3e7170 100644 --- a/ConvertObj/ConvertObj.cc +++ b/ConvertObj/ConvertObj.cc @@ -2,6 +2,7 @@ #include #include #include +#include #include #include "BinaryIO.h" #include @@ -194,9 +195,9 @@ void Module::write(std::ostream& out) void sortModules(std::vector>& modules) { - std::unordered_set> unemitted; + std::set unemitted; for(auto& m : modules) - unemitted.insert(m); + unemitted.insert(m->name); std::unordered_map> nameMap; for(auto& m : modules) @@ -242,7 +243,7 @@ void sortModules(std::vector>& modules) { if(std::shared_ptr m2 = m2weak.lock()) { - auto unemittedP = unemitted.find(m2); + auto unemittedP = unemitted.find(m2->name); if(unemittedP != unemitted.end()) { sorted.push_back(m2); @@ -252,7 +253,7 @@ void sortModules(std::vector>& modules) } ++p; } - sorted.push_back(*unemitted.begin()); + sorted.push_back(nameMap[*unemitted.begin()]); unemitted.erase(unemitted.begin()); }