From bc26b917b9a8be7861a7b52fa3ae78f7523292bc Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Mon, 26 Apr 2010 19:16:06 +0200
Subject: [PATCH] Revertlist for states are now skipped if the state is
 destroying.

Task-Number: BAUHAUS-636
Reviewed-by: kkoehne
---
 .../instances/qmlpropertychangesnodeinstance.cpp  | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/plugins/qmldesigner/core/instances/qmlpropertychangesnodeinstance.cpp b/src/plugins/qmldesigner/core/instances/qmlpropertychangesnodeinstance.cpp
index c8938ef2556..517dfb48435 100644
--- a/src/plugins/qmldesigner/core/instances/qmlpropertychangesnodeinstance.cpp
+++ b/src/plugins/qmldesigner/core/instances/qmlpropertychangesnodeinstance.cpp
@@ -252,7 +252,7 @@ QDeclarativeStateGroup *QmlPropertyChangesObject::stateGroup() const
 
 QDeclarativeStatePrivate *QmlPropertyChangesObject::statePrivate() const
 {
-    if (!parent())
+    if (!parent() || QObjectPrivate::get(parent())->wasDeleted)
         return 0;
 
     Q_ASSERT(qobject_cast<QDeclarativeState*>(parent()));
@@ -350,12 +350,13 @@ void QmlPropertyChangesObject::removeFromStateRevertList()
         while(simpleActionIterator.hasNext()) {
             QDeclarativeSimpleAction &simpleAction = simpleActionIterator.next();
             if (simpleAction.specifiedObject == targetObject()) {
-                Q_ASSERT(simpleAction.property.isValid());
-                if (simpleAction.binding) {
-                    QDeclarativePropertyPrivate::setBinding(simpleAction.property, simpleAction.binding);
-                } else if (simpleAction.value.isValid()) {
-                    QDeclarativePropertyPrivate::setBinding(simpleAction.property, 0);
-                    simpleAction.property.write(simpleAction.value);
+                if (simpleAction.property.isValid()) {
+                    if (simpleAction.binding) {
+                        QDeclarativePropertyPrivate::setBinding(simpleAction.property, simpleAction.binding);
+                    } else if (simpleAction.value.isValid()) {
+                        QDeclarativePropertyPrivate::setBinding(simpleAction.property, 0);
+                        simpleAction.property.write(simpleAction.value);
+                    }
                 }
                 simpleActionIterator.remove();
             }
-- 
GitLab