From 86de74fd759a5e7c65edf79b282bf6dea5052e79 Mon Sep 17 00:00:00 2001 From: Andrey Kvochko Date: Tue, 26 Sep 2017 14:18:49 +0300 Subject: [PATCH] Address more feedback --- src/analyze/gui/parser.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/analyze/gui/parser.cpp b/src/analyze/gui/parser.cpp index 3e8e194..b97a854 100644 --- a/src/analyze/gui/parser.cpp +++ b/src/analyze/gui/parser.cpp @@ -22,8 +22,6 @@ #include #include -#include -#include #include "analyze/accumulatedtracedata.h" @@ -103,8 +101,10 @@ struct TypeTree { auto parent = create(node); parent->m_referencedSize = leaf->m_referencedSize; TypeTree* childIt = leaf.get(); - while (childIt->m_parents.size() > 0) + while (childIt->m_parents.size() > 0) { + assert(childIt->m_parents.size() == 1 && "Invalid number of m_parents"); childIt = childIt->m_parents[0].get(); + } childIt->m_parents.push_back(std::move(parent)); result.push_back(std::move(leaf)); auto parentCopy = create(node); @@ -748,6 +748,10 @@ ObjectNode buildObjectGraph(ParserData& data, size_t &nodeIndex, bool &success) node.m_objectSize = 0; nodeIndex++; for (size_t i = 0; i < dataNode.numChildren; ++i) { + + // FIXME: this check will not be needed once we can ensure the + // integrity of the trace. + // https://github.sec.samsung.net/dotnet/profiler/issues/24 if (node.gcNum != data.objectTreeNodes[nodeIndex].gcNum) { success = false; break; @@ -766,11 +770,14 @@ ObjectTreeData buildObjectTree(ParserData& data) while (nodeIndex < data.objectTreeNodes.size()) { bool success = true; ObjectNode node = buildObjectGraph(data, nodeIndex, success); + + // FIXME: this check will not be needed once we can ensure the + // integrity of the trace. + // https://github.sec.samsung.net/dotnet/profiler/issues/24 if (success) nodes.push_back(node); else { - QMessageBox::warning(nullptr, QString::fromStdString("Bad data"), - QString::fromStdString("Heap snapshot for GC #%1 is incomplete").arg(node.gcNum)); + qFatal("Heap snapshot data is incomplete"); } } -- 2.7.4