forked from qt-creator/qt-creator
QmlProfiler: Don't crash on inconsistent profiling data
The trace may contain RangeData and RangeLocation entries that aren't aligned with any RangeStart. As the trace is generated by an external process we need to handle that. Change-Id: I39a524127c9c9059e5c5521797e5effd385ce12b Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
This commit is contained in:
@@ -138,7 +138,8 @@ void QmlProfilerTraceClientPrivate::processCurrentEvent()
|
||||
break;
|
||||
case RangeEnd: {
|
||||
int typeIndex = resolveStackTop();
|
||||
QTC_ASSERT(typeIndex != -1, break);
|
||||
if (typeIndex == -1)
|
||||
break;
|
||||
currentEvent.event.setTypeIndex(typeIndex);
|
||||
while (!pendingMessages.isEmpty())
|
||||
modelManager->addEvent(pendingMessages.dequeue());
|
||||
@@ -147,9 +148,11 @@ void QmlProfilerTraceClientPrivate::processCurrentEvent()
|
||||
break;
|
||||
}
|
||||
case RangeData:
|
||||
if (!rangesInProgress.isEmpty())
|
||||
rangesInProgress.top().type.setData(currentEvent.type.data());
|
||||
break;
|
||||
case RangeLocation:
|
||||
if (!rangesInProgress.isEmpty())
|
||||
rangesInProgress.top().type.setLocation(currentEvent.type.location());
|
||||
break;
|
||||
default: {
|
||||
|
Reference in New Issue
Block a user