summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Becher <jochen_becher@gmx.de>2017-07-25 22:35:42 +0200
committerJochen Becher <jochen_becher@gmx.de>2017-07-26 15:59:30 +0000
commit4b3acf03fbfcd4a181f2bd0b10435efccae0ebe5 (patch)
tree3e1cd0a69461e934c403817ea5d17e6c8586e226
parent336f54def454e83ac34a946dcda448615a6453d8 (diff)
downloadqt-creator-4b3acf03fbfcd4a181f2bd0b10435efccae0ebe5.tar.gz
ModelEditor: Fix a crash moving packages into itself
Change-Id: I1a722b9514ee0a57d8bd8be2f4ea05ed87c6686d Task-number: QTCREATORBUG-18262 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
-rw-r--r--src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp b/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp
index 2b940f012a..9257e149b3 100644
--- a/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp
+++ b/src/libs/modelinglib/qmt/model_controller/modelcontroller.cpp
@@ -756,6 +756,13 @@ void ModelController::moveObject(MPackage *newOwner, MObject *object)
QMT_CHECK(object);
QMT_CHECK(object != m_rootPackage);
+ // verify that newOwner is not a child of object
+ MObject *newOwnerObject = newOwner;
+ while (newOwnerObject && newOwnerObject != object)
+ newOwnerObject = newOwnerObject->owner();
+ if (newOwnerObject == object)
+ return;
+
if (newOwner != object->owner()) {
int formerRow = 0;
MObject *formerOwner = object->owner();