diff --git a/server/TracyView.cpp b/server/TracyView.cpp index dd9040f6..7587316b 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -207,18 +207,6 @@ View::View( FileRead& f ) m_frames.push_back( v ); } - f.Read( &sz, sizeof( sz ) ); - for( uint64_t i=0; i pointerMap; f.Read( &sz, sizeof( sz ) ); @@ -236,6 +224,15 @@ View::View( FileRead& f ) pointerMap.emplace( ptr, dst ); } + f.Read( &sz, sizeof( sz ) ); + for( uint64_t i=0; isecond ); + } + f.Read( &sz, sizeof( sz ) ); for( uint64_t i=0; i lock( m_lock ); - m_strings.emplace( ptr, std::move( str ) ); + m_strings.emplace( ptr, sl.ptr ); } void View::AddThreadString( uint64_t id, char* str, size_t sz ) @@ -1224,7 +1222,7 @@ void View::HandlePlotName( uint64_t name, std::string&& str ) m_plotRev.emplace( str, idx ); std::lock_guard lock( m_lock ); m_plots.push_back( pit->second ); - m_strings.emplace( name, std::move( str ) ); + //m_strings.emplace( name, std::move( str ) ); } else { @@ -1335,7 +1333,7 @@ const char* View::GetString( uint64_t ptr ) const } else { - return it->second.c_str(); + return it->second; } } @@ -3235,16 +3233,6 @@ void View::Write( FileWrite& f ) f.Write( &sz, sizeof( sz ) ); f.Write( m_frames.data(), sizeof( uint64_t ) * sz ); - sz = m_strings.size(); - f.Write( &sz, sizeof( sz ) ); - for( auto& v : m_strings ) - { - f.Write( &v.first, sizeof( v.first ) ); - sz = v.second.size(); - f.Write( &sz, sizeof( sz ) ); - f.Write( v.second.c_str(), v.second.size() ); - } - sz = m_stringData.size(); f.Write( &sz, sizeof( sz ) ); for( auto& v : m_stringData ) @@ -3256,6 +3244,15 @@ void View::Write( FileWrite& f ) f.Write( v, sz ); } + sz = m_strings.size(); + f.Write( &sz, sizeof( sz ) ); + for( auto& v : m_strings ) + { + f.Write( &v.first, sizeof( v.first ) ); + uint64_t ptr = (uint64_t)v.second; + f.Write( &ptr, sizeof( ptr ) ); + } + sz = m_threadNames.size(); f.Write( &sz, sizeof( sz ) ); for( auto& v : m_threadNames ) diff --git a/server/TracyView.hpp b/server/TracyView.hpp index f6801c92..001324a7 100644 --- a/server/TracyView.hpp +++ b/server/TracyView.hpp @@ -148,7 +148,7 @@ private: void CheckSourceLocation( uint64_t ptr ); void CheckSourceLocationPayload( uint64_t ptr, ZoneEvent* dst ); - void AddString( uint64_t ptr, std::string&& str ); + void AddString( uint64_t ptr, char* str, size_t sz ); void AddThreadString( uint64_t id, char* str, size_t sz ); void AddCustomString( uint64_t ptr, char* str, size_t sz ); void AddSourceLocation( const QueueSourceLocation& srcloc ); @@ -238,7 +238,7 @@ private: Vector m_messages; Vector m_textData; Vector m_sourceLocationPayload; - std::unordered_map m_strings; + std::unordered_map m_strings; std::unordered_map m_threadNames; std::unordered_map m_sourceLocation; std::vector m_sourceLocationExpand;