Allow GetSymbolStats() to fail gracefully.

This commit is contained in:
Bartosz Taudul 2020-02-29 18:41:07 +01:00
parent 9b53792f20
commit 39361f71a1
3 changed files with 11 additions and 5 deletions

View File

@ -13292,7 +13292,7 @@ void View::DrawAnnotationList()
void View::DrawSampleParents()
{
const auto symbol = m_worker.GetSymbolData( m_sampleParents.symAddr );
const auto stats = m_worker.GetSymbolStats( m_sampleParents.symAddr );
const auto stats = *m_worker.GetSymbolStats( m_sampleParents.symAddr );
assert( !stats.parents.empty() );
bool show = true;

View File

@ -2349,12 +2349,18 @@ const Worker::SourceLocationZones& Worker::GetZonesForSourceLocation( int16_t sr
return it != m_data.sourceLocationZones.end() ? it->second : empty;
}
const SymbolStats& Worker::GetSymbolStats( uint64_t symAddr ) const
const SymbolStats* Worker::GetSymbolStats( uint64_t symAddr ) const
{
assert( AreCallstackSamplesReady() );
auto it = m_data.symbolStats.find( symAddr );
assert( it != m_data.symbolStats.end() );
return it->second;
if( it == m_data.symbolStats.end() )
{
return nullptr;
}
else
{
return &it->second;
}
}
#endif

View File

@ -448,7 +448,7 @@ public:
const unordered_flat_map<uint64_t, SymbolData>& GetSymbolMap() const { return m_data.symbolMap; }
const unordered_flat_map<uint64_t, SymbolStats>& GetSymbolStats() const { return m_data.symbolStats; }
const SymbolStats& GetSymbolStats( uint64_t symAddr ) const;
const SymbolStats* GetSymbolStats( uint64_t symAddr ) const;
bool AreCallstackSamplesReady() const { return m_data.callstackSamplesReady; }
#endif