summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-02-03 01:02:23 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-02-03 01:02:23 (GMT)
commit7e4d10bb7f06e7369452d2683ba999e90c27d06b (patch)
tree06668244061f707e7e3fce3a6adba0a2c09ba8b0 /src/declarative
parentdea94ac9d18f8bb72d20ec4bcfd48bbf1b03fec0 (diff)
downloadQt-7e4d10bb7f06e7369452d2683ba999e90c27d06b.zip
Qt-7e4d10bb7f06e7369452d2683ba999e90c27d06b.tar.gz
Qt-7e4d10bb7f06e7369452d2683ba999e90c27d06b.tar.bz2
Fix Loader crash when Loader.item causes a new item to be loaded
Task-number: QT-2338
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsloader.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicsloader.cpp b/src/declarative/graphicsitems/qmlgraphicsloader.cpp
index bb1020c..7cd4d1a 100644
--- a/src/declarative/graphicsitems/qmlgraphicsloader.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsloader.cpp
@@ -64,8 +64,14 @@ void QmlGraphicsLoaderPrivate::clear()
}
source = QUrl();
- delete item;
- item = 0;
+ if (item) {
+ // We can't delete immediately because our item may have triggered
+ // the Loader to load a different item.
+ item->setVisible(false);
+ static_cast<QGraphicsItem*>(item)->setParentItem(0);
+ item->deleteLater();
+ item = 0;
+ }
}
void QmlGraphicsLoaderPrivate::initResize()