diff options
Diffstat (limited to 'view/sharedcache/core/SharedCache.cpp')
| -rw-r--r-- | view/sharedcache/core/SharedCache.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/view/sharedcache/core/SharedCache.cpp b/view/sharedcache/core/SharedCache.cpp index 936dca4d..e468b559 100644 --- a/view/sharedcache/core/SharedCache.cpp +++ b/view/sharedcache/core/SharedCache.cpp @@ -149,6 +149,7 @@ SharedCache::SharedCache(uint64_t addressSize) { m_addressSize = addressSize; m_vm = std::make_shared<VirtualMemory>(); + m_namedSymMutex = std::make_unique<std::shared_mutex>(); } @@ -437,6 +438,7 @@ void SharedCache::ProcessEntrySlideInfo(const CacheEntry& entry) const void SharedCache::ProcessSymbols() { + std::unique_lock<std::shared_mutex> lock(*m_namedSymMutex); // Populate the named symbols from the regular symbols map. m_namedSymbols.reserve(m_symbols.size()); for (const auto& [address, symbol] : m_symbols) @@ -520,8 +522,9 @@ std::optional<CacheSymbol> SharedCache::GetSymbolAt(uint64_t address) const return it->second; } -std::optional<CacheSymbol> SharedCache::GetSymbolWithName(const std::string& name) const +std::optional<CacheSymbol> SharedCache::GetSymbolWithName(const std::string& name) { + std::shared_lock<std::shared_mutex> lock(*m_namedSymMutex); const auto it = m_namedSymbols.find(name); if (it == m_namedSymbols.end()) return std::nullopt; |
