aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@nokia.com>2012-02-06 17:57:43 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-07 11:45:14 +0100
commit5a5393fd53eea23b0de5a69ad9d706a2ee2502cc (patch)
treedcd133318138403f01942cec33a459d9620ba5e3 /src
parent96860e3c9e425730aeb241ad7e1a5392164aea55 (diff)
Avoid recursive parent chains in QQuickItem
Change-Id: I47b666cfacd804c4302236f0a4b371ca7b382c3d Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickitem.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
index 30a23db4de..166ffe82b2 100644
--- a/src/quick/items/qquickitem.cpp
+++ b/src/quick/items/qquickitem.cpp
@@ -1869,6 +1869,17 @@ void QQuickItem::setParentItem(QQuickItem *parentItem)
if (parentItem == d->parentItem)
return;
+ if (parentItem) {
+ QQuickItem *itemAncestor = parentItem->parentItem();
+ while (itemAncestor != 0) {
+ if (itemAncestor == this) {
+ qWarning("QQuickItem::setParentItem: Parent is already part of this items subtree.");
+ return;
+ }
+ itemAncestor = itemAncestor->parentItem();
+ }
+ }
+
d->removeFromDirtyList();
QQuickItem *oldParentItem = d->parentItem;