summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2019-02-11 13:01:35 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2019-02-11 13:41:03 +0000
commit5f5e2543a5f6971fa1d07c9e84eba9742ba329f8 (patch)
treeebff22e42b7b59d8a4cd75b78d871b506d11274d
parentb71a6eec20ffca672e6b43f9eea78fd694cc3c7f (diff)
downloadqt-creator-5f5e2543a5f6971fa1d07c9e84eba9742ba329f8.tar.gz
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 <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/designercore/model/rewriterview.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp
index f4cd9c7e79..2b22844bb9 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<PropertyName, QVariant> data = node.auxiliaryData();
@@ -727,8 +729,11 @@ void RewriterView::setupCanonicalHashes() const
using myPair = std::pair<ModelNode,int>;
std::vector<myPair> 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());