diff --git a/server/TracySourceView.cpp b/server/TracySourceView.cpp index e98cf640..563601ec 100644 --- a/server/TracySourceView.cpp +++ b/server/TracySourceView.cpp @@ -240,10 +240,12 @@ bool SourceView::Disassemble( uint64_t symAddr, const Worker& worker ) const auto mLen = strlen( op.mnemonic ); if( mLen > mLenMax ) mLenMax = mLen; + uint32_t mLineMax = 0; uint32_t srcline; const auto srcidx = worker.GetLocationForAddress( op.address, srcline ); if( srcline != 0 ) { + if( srcline > mLineMax ) mLineMax = srcline; const auto idx = srcidx.Idx(); auto sit = m_sourceFiles.find( idx ); if( sit == m_sourceFiles.end() ) @@ -251,6 +253,9 @@ bool SourceView::Disassemble( uint64_t symAddr, const Worker& worker ) m_sourceFiles.emplace( idx, srcline ); } } + char tmp[16]; + sprintf( tmp, "%" PRIu32, mLineMax ); + m_maxLine = strlen( tmp ) + 1; } cs_free( insn, cnt ); m_maxMnemonicLen = mLenMax + 2; @@ -961,13 +966,13 @@ void SourceView::RenderAsmLine( const AsmLine& line, uint32_t ipcnt, uint32_t ip const auto linesz = strlen( lineString ); char buf[32]; const auto fnsz = strlen( fileName ); - if( fnsz < 32 - 8 ) + if( fnsz < 30 - m_maxLine ) { sprintf( buf, "%s:%i", fileName, srcline ); } else { - sprintf( buf, "...%s:%i", fileName+fnsz-(32-3-1-8), srcline ); + sprintf( buf, "...%s:%i", fileName+fnsz-(30-3-1-m_maxLine), srcline ); } const auto bufsz = strlen( buf ); TextDisabledUnformatted( buf ); diff --git a/server/TracySourceView.hpp b/server/TracySourceView.hpp index 92c03d24..42c83429 100644 --- a/server/TracySourceView.hpp +++ b/server/TracySourceView.hpp @@ -96,6 +96,7 @@ private: unordered_flat_map m_sourceFiles; unordered_flat_set m_selectedAddresses; + uint32_t m_maxLine; int m_maxMnemonicLen; };