diff --git a/public/client/TracyProfiler.cpp b/public/client/TracyProfiler.cpp index 44841ab4..3d0f95c3 100644 --- a/public/client/TracyProfiler.cpp +++ b/public/client/TracyProfiler.cpp @@ -3519,9 +3519,8 @@ void Profiler::SendSingleString16( const char* ptr, size_t len ) QueueItem item; MemWrite( &item.hdr.type, QueueType::SingleStringData ); - // Ignoring u16+ range by design assert( len > std::numeric_limits::max() ); - assert( len <= std::numeric_limits::max() ); + assert( len <= ProtocolOffset8Bit + std::numeric_limits::max() ); auto l16 = uint16_t( len - ProtocolOffset8Bit ); NeedDataSize( QueueDataSize[(int)QueueType::SingleStringData] + sizeof( l16 ) + len ); @@ -3551,9 +3550,8 @@ void Profiler::SendSecondString16( const char* ptr, size_t len ) QueueItem item; MemWrite( &item.hdr.type, QueueType::SecondStringData ); - // Ignoring u16+ range by design assert( len > std::numeric_limits::max() ); - assert( len <= std::numeric_limits::max() ); + assert( len <= ProtocolOffset8Bit + std::numeric_limits::max() ); auto l16 = uint16_t( len - ProtocolOffset8Bit ); NeedDataSize( QueueDataSize[(int)QueueType::SecondStringData] + sizeof( l16 ) + len ); diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 10959cb5..08595a3c 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -3191,22 +3191,23 @@ void Worker::DispatchFailure( const QueueItem& ev, const char*& ptr ) else { uint8_t sz8; - uint16_t sz; + uint16_t sz16; + uint32_t sz; switch( ev.hdr.type ) { case QueueType::SingleStringData: ptr += sizeof( QueueHeader ); - memcpy( &sz, ptr, sizeof( sz ) ); - ptr += sizeof( sz ); - sz += ProtocolOffset8Bit; + memcpy( &sz16, ptr, sizeof( sz16 ) ); + ptr += sizeof( sz16 ); + sz = sz16 + ProtocolOffset8Bit; AddSingleStringFailure( ptr, sz ); ptr += sz; break; case QueueType::SecondStringData: ptr += sizeof( QueueHeader ); - memcpy( &sz, ptr, sizeof( sz ) ); - ptr += sizeof( sz ); - sz += ProtocolOffset8Bit; + memcpy( &sz16, ptr, sizeof( sz16 ) ); + ptr += sizeof( sz16 ); + sz = sz16 + ProtocolOffset8Bit; AddSecondString( ptr, sz ); ptr += sz; break; @@ -3408,22 +3409,23 @@ bool Worker::DispatchProcess( const QueueItem& ev, const char*& ptr ) else { uint8_t sz8; - uint16_t sz; + uint16_t sz16; + uint32_t sz; switch( ev.hdr.type ) { case QueueType::SingleStringData: ptr += sizeof( QueueHeader ); - memcpy( &sz, ptr, sizeof( sz ) ); - ptr += sizeof( sz ); - sz += ProtocolOffset8Bit; + memcpy( &sz16, ptr, sizeof( sz16 ) ); + ptr += sizeof( sz16 ); + sz = sz16 + ProtocolOffset8Bit; AddSingleString( ptr, sz ); ptr += sz; return true; case QueueType::SecondStringData: ptr += sizeof( QueueHeader ); - memcpy( &sz, ptr, sizeof( sz ) ); - ptr += sizeof( sz ); - sz += ProtocolOffset8Bit; + memcpy( &sz16, ptr, sizeof( sz16 ) ); + ptr += sizeof( sz16 ); + sz = sz16 + ProtocolOffset8Bit; AddSecondString( ptr, sz ); ptr += sz; return true;