From 5f5e2543a5f6971fa1d07c9e84eba9742ba329f8 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 11 Feb 2019 13:01:35 +0100 Subject: [PATCH] QmlDesigner: Do not generate auxiliaryDataAsQML for offset -1 If a node does not have a proper offset, then the data is inconsistent. Change-Id: I1fbff3e169b225bc4ca00b1deb21982f30281f9a Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/model/rewriterview.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index f4cd9c7e796..2b22844bb9c 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -486,6 +486,8 @@ QString RewriterView::auxiliaryDataAsQML() const QString str = "Designer {\n "; + QTC_ASSERT(!m_canonicalIntModelNode.isEmpty(), return {}); + int columnCount = 0; for (const auto &node : allModelNodes()) { QHash data = node.auxiliaryData(); @@ -727,8 +729,11 @@ void RewriterView::setupCanonicalHashes() const using myPair = std::pair; std::vector data; - for (const ModelNode &node : allModelNodes()) - data.emplace_back(std::make_pair(node, nodeOffset(node))); + for (const ModelNode &node : allModelNodes()) { + int offset = nodeOffset(node); + QTC_ASSERT(offset > 0, qDebug() << Q_FUNC_INFO << "no offset" << node; return); + data.emplace_back(std::make_pair(node, offset)); + } std::sort(data.begin(), data.end(), [](myPair a, myPair b) { return a.second < b.second; @@ -1066,6 +1071,8 @@ void RewriterView::restoreAuxiliaryData() setupCanonicalHashes(); + QTC_ASSERT(!m_canonicalIntModelNode.isEmpty(), return); + const QString text = m_textModifier->text(); int startIndex = text.indexOf(annotationsStart());