From 4348c5428d2f953ee85cd6ca57bf291e4aca88dc Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Thu, 21 Oct 2021 01:30:17 +0200 Subject: [PATCH] Returned strings may be invalidated, so copy them. --- client/TracyCallstack.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/client/TracyCallstack.cpp b/client/TracyCallstack.cpp index fabbc12e..6f430d1f 100644 --- a/client/TracyCallstack.cpp +++ b/client/TracyCallstack.cpp @@ -353,13 +353,14 @@ CallstackSymbolData DecodeSymbolAddress( uint64_t ptr ) { sym.file = "[unknown]"; sym.line = 0; + sym.needFree = false; } else { - sym.file = line.FileName; + sym.file = CopyString( line.FileName ); sym.line = line.LineNumber; + sym.needFree = true; } - sym.needFree = false; return sym; } @@ -393,8 +394,9 @@ CallstackSymbolData DecodeCodeAddress( uint64_t ptr ) { if( _SymGetLineFromInlineContext( proc, ptr, ctx, 0, &displacement, &line ) != 0 ) { - sym.file = line.FileName; + sym.file = CopyString( line.FileName ); sym.line = line.LineNumber; + sym.needFree = true; done = true; if( _SymFromInlineContext( proc, ptr, ctx, nullptr, si ) != 0 ) @@ -416,11 +418,13 @@ CallstackSymbolData DecodeCodeAddress( uint64_t ptr ) sym.file = "[unknown]"; sym.line = 0; sym.symAddr = 0; + sym.needFree = false; } else { - sym.file = line.FileName; + sym.file = CopyString( line.FileName ); sym.line = line.LineNumber; + sym.needFree = true; if( SymFromAddr( proc, ptr, nullptr, si ) != 0 ) { @@ -435,7 +439,6 @@ CallstackSymbolData DecodeCodeAddress( uint64_t ptr ) #ifdef TRACY_DBGHELP_LOCK DBGHELP_UNLOCK; #endif - sym.needFree = false; return sym; }