Skip to content

Commit dcc46d2

Browse files
authored
Merge pull request wolfpld#1149 from anderswk-ioi/master
Fix crash due to freeing elements of m_serialDequeue twice.
2 parents 6e214ca + 355a11f commit dcc46d2

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

‎public/client/TracyProfiler.cpp‎

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2846,9 +2846,13 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
28462846
}
28472847
}
28482848

2849+
DequeueStatus dequeueStatus = DequeueStatus::QueueEmpty;
2850+
28492851
const auto sz = m_serialDequeue.size();
28502852
if( sz > 0 )
28512853
{
2854+
dequeueStatus = DequeueStatus::DataDequeued;
2855+
28522856
InitRpmalloc();
28532857
int64_t refSerial = m_refTimeSerial;
28542858
int64_t refGpu = m_refTimeGpu;
@@ -3145,7 +3149,10 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
31453149
}
31463150
}
31473151
#endif
3148-
if( !AppendData( item, QueueDataSize[idx] ) ) return DequeueStatus::ConnectionLost;
3152+
if(dequeueStatus != DequeueStatus::ConnectionLost && !AppendData( item, QueueDataSize[idx] ) )
3153+
{
3154+
dequeueStatus = DequeueStatus::ConnectionLost;
3155+
}
31493156
item++;
31503157
}
31513158
m_refTimeSerial = refSerial;
@@ -3155,11 +3162,7 @@ Profiler::DequeueStatus Profiler::DequeueSerial()
31553162
#endif
31563163
m_serialDequeue.clear();
31573164
}
3158-
else
3159-
{
3160-
return DequeueStatus::QueueEmpty;
3161-
}
3162-
return DequeueStatus::DataDequeued;
3165+
return dequeueStatus;
31633166
}
31643167

31653168
Profiler::ThreadCtxStatus Profiler::ThreadCtxCheck( uint32_t threadId )

0 commit comments

Comments
 (0)