From 78ea40d70cbfc5e8304e33d0c532fe7b46cf8228 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Fri, 27 Mar 2020 21:30:16 +0100 Subject: [PATCH] Check for asm/source availability in SetTextEditorFile. --- server/TracyView.cpp | 28 +++++++++++++++++++++++++--- server/TracyView.hpp | 2 +- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 450dee87..eee66164 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -199,11 +199,28 @@ void View::SetTextEditorFile( const char* fileName, int line, uint64_t baseAddr, m_sourceView->Open( fileName, line, baseAddr, symAddr, m_worker ); } -void View::SetTextEditorFile( const char* fileName, int line, uint64_t symAddr ) +bool View::SetTextEditorFile( const char* fileName, int line, uint64_t symAddr ) { + if( line == 0 ) + { + fileName = nullptr; + } + else + { + if( !SourceFileValid( fileName, m_worker.GetCaptureTime() ) ) + { + fileName = nullptr; + line = 0; + } + } if( symAddr == 0 ) { - SetTextEditorFile( fileName, line, 0, 0 ); + if( line != 0 ) + { + SetTextEditorFile( fileName, line, 0, 0 ); + return true; + } + return false; } else { @@ -222,7 +239,12 @@ void View::SetTextEditorFile( const char* fileName, int line, uint64_t symAddr ) if( pit != symMap.end() ) baseAddr = parentAddr; } } - SetTextEditorFile( fileName, line, baseAddr, symAddr ); + if( symlen != 0 || line != 0 ) + { + SetTextEditorFile( fileName, line, baseAddr, symAddr ); + return true; + } + return false; } } diff --git a/server/TracyView.hpp b/server/TracyView.hpp index b7ef2dc2..d1fbe4bf 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -81,7 +81,7 @@ public: void NotifyRootWindowSize( float w, float h ) { m_rootWidth = w; m_rootHeight = h; } void SetTextEditorFile( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr ); - void SetTextEditorFile( const char* fileName, int line, uint64_t symAddr ); + bool SetTextEditorFile( const char* fileName, int line, uint64_t symAddr ); bool ReconnectRequested() const { return m_reconnectRequested; } std::string GetAddress() const { return m_worker.GetAddr(); }