From cd8b064d7674af3660cbda51836bf09aa1c9325f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 5 Jul 2019 11:59:59 +0200 Subject: QmlDesigner: Fix potential crashes Change-Id: Ieb3211090d16150943fd4d2dd15a4a63ecdae078 Reviewed-by: Tim Jenssen --- .../qmldesigner/components/componentcore/layoutingridlayout.cpp | 6 ++++++ src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp b/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp index ba520a1ca3..a1629c0b5b 100644 --- a/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp +++ b/src/plugins/qmldesigner/components/componentcore/layoutingridlayout.cpp @@ -179,6 +179,8 @@ void LayoutInGridLayout::doIt() initializeCells(); markUsedCells(); + QTC_ASSERT(m_parentNode.isValid(), return); + if (QmlItemNode::isValidQmlItemNode(m_selectionContext.firstSelectedModelNode())) { const QmlItemNode qmlItemNode = QmlItemNode(m_selectionContext.firstSelectedModelNode()); @@ -256,6 +258,10 @@ void LayoutInGridLayout::collectItemNodes() m_qmlItemNodes.append(itemNode); } } + + if (m_qmlItemNodes.isEmpty()) + return; + m_parentNode = m_qmlItemNodes.constFirst().instanceParentItem(); } diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 53e29b7157..cc44f9c448 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -625,9 +625,10 @@ bool QmlObjectNode::hasInstanceParent() const bool QmlObjectNode::hasInstanceParentItem() const { - return nodeInstance().parentId() >= 0 - && nodeInstanceView()->hasInstanceForId(nodeInstance().parentId()) - && QmlItemNode::isItemOrWindow(view()->modelNodeForInternalId(nodeInstance().parentId())); + return isValid() + && nodeInstance().parentId() >= 0 + && nodeInstanceView()->hasInstanceForId(nodeInstance().parentId()) + && QmlItemNode::isItemOrWindow(view()->modelNodeForInternalId(nodeInstance().parentId())); } -- cgit v1.2.3