From 8d812db9ad31c7104760612375e43e2fe79428ca Mon Sep 17 00:00:00 2001 From: Sepalani Date: Mon, 10 Oct 2016 23:35:33 +0100 Subject: [PATCH] SymbolDB: Use set to map hash with symbols --- Source/Core/Common/SymbolDB.cpp | 5 +++-- Source/Core/Common/SymbolDB.h | 3 ++- Source/Core/Core/PowerPC/PPCSymbolDB.cpp | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Source/Core/Common/SymbolDB.cpp b/Source/Core/Common/SymbolDB.cpp index b4c64b4d91..f558b54ebb 100644 --- a/Source/Core/Common/SymbolDB.cpp +++ b/Source/Core/Common/SymbolDB.cpp @@ -65,7 +65,7 @@ Symbol* SymbolDB::GetSymbolFromHash(u32 hash) { XFuncPtrMap::iterator iter = checksumToFunction.find(hash); if (iter != checksumToFunction.end()) - return iter->second; + return *iter->second.begin(); else return nullptr; } @@ -76,7 +76,8 @@ std::vector SymbolDB::GetSymbolsFromHash(u32 hash) for (const auto& iter : checksumToFunction) if (iter.first == hash) - symbols.push_back(iter.second); + for (const auto& symbol : iter.second) + symbols.push_back(symbol); return symbols; } diff --git a/Source/Core/Common/SymbolDB.h b/Source/Core/Common/SymbolDB.h index ef7f4664ee..e1aab41f94 100644 --- a/Source/Core/Common/SymbolDB.h +++ b/Source/Core/Common/SymbolDB.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include #include #include @@ -57,7 +58,7 @@ class SymbolDB { public: typedef std::map XFuncMap; - typedef std::map XFuncPtrMap; + typedef std::map> XFuncPtrMap; protected: XFuncMap functions; diff --git a/Source/Core/Core/PowerPC/PPCSymbolDB.cpp b/Source/Core/Core/PowerPC/PPCSymbolDB.cpp index e20a1bfb0c..adc7e56416 100644 --- a/Source/Core/Core/PowerPC/PPCSymbolDB.cpp +++ b/Source/Core/Core/PowerPC/PPCSymbolDB.cpp @@ -57,7 +57,7 @@ Symbol* PPCSymbolDB::AddFunction(u32 startAddr) // LOG(OSHLE, "Symbol found at %08x", startAddr); functions[startAddr] = tempFunc; tempFunc.type = Symbol::Type::Function; - checksumToFunction[tempFunc.hash] = &(functions[startAddr]); + checksumToFunction[tempFunc.hash].insert(&functions[startAddr]); return &functions[startAddr]; } } @@ -86,7 +86,7 @@ void PPCSymbolDB::AddKnownSymbol(u32 startAddr, u32 size, const std::string& nam if (tf.type == Symbol::Type::Function) { PPCAnalyst::AnalyzeFunction(startAddr, tf, size); - checksumToFunction[tf.hash] = &(functions[startAddr]); + checksumToFunction[tf.hash].insert(&functions[startAddr]); tf.function_name = GetStrippedFunctionName(name); } tf.size = size;