diff --git a/PowerRecomp/main.cpp b/PowerRecomp/main.cpp index 3ddae3c..84ca8cf 100644 --- a/PowerRecomp/main.cpp +++ b/PowerRecomp/main.cpp @@ -113,7 +113,7 @@ int main() for (size_t funcIdx = 0; funcIdx < functions.size(); funcIdx++) { - if ((funcIdx % 100) == 0) + if ((funcIdx % 1000) == 0) std::println("Recompiling functions... {}%", static_cast(funcIdx) / functions.size() * 100.0f); auto& fn = functions[funcIdx]; diff --git a/PowerUtils/symbol_table.h b/PowerUtils/symbol_table.h index e299a50..ca3ab70 100644 --- a/PowerUtils/symbol_table.h +++ b/PowerUtils/symbol_table.h @@ -7,25 +7,25 @@ class SymbolTable : public std::multiset public: const_iterator find(size_t address) const { - auto iter = std::multiset::find(address); - if (iter == end()) + auto [beginIt, endIt] = equal_range(address); + if (beginIt == endIt) { - return iter; + return end(); } - size_t closest{ address - iter->address }; + size_t closest{ address - beginIt->address }; auto match = end(); - for (; iter != end(); ++iter) + for (auto it = beginIt; it != endIt; ++it) { - if (address < iter->address || address >= iter->address + iter->size) + if (address < it->address || address >= it->address + it->size) { continue; } - const size_t distance = address - iter->address; + const size_t distance = address - it->address; if (distance <= closest) { - match = iter; + match = it; closest = distance; } } @@ -35,25 +35,25 @@ public: iterator find(size_t address) { - auto iter = std::multiset::find(address); - if (iter == end()) + auto [beginIt, endIt] = equal_range(address); + if (beginIt == endIt) { - return iter; + return end(); } - size_t closest{ address - iter->address }; + size_t closest{ address - beginIt->address }; auto match = end(); - for (; iter != end(); ++iter) + for (auto it = beginIt; it != endIt; ++it) { - if (address < iter->address || address >= iter->address + iter->size) + if (address < it->address || address >= it->address + it->size) { continue; } - const size_t distance = address - iter->address; + const size_t distance = address - it->address; if (distance <= closest) { - match = iter; + match = it; closest = distance; } }