From 565158bbb444a3e63391066b80e12f1c01a5c29c Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Wed, 12 May 2010 21:50:58 +0200
Subject: [PATCH] Always reset the id for an object in node instances

Because we tested for the parent, the id of a root item never reset.
This was hidden because if you remove a root item all
child items was removed too. But if the object was not deleted by the
root item and there was a binding the root item id, there was a dangling
pointer.

Task-Number: BAUHAUS-662
Reviewed-by: kkoehne
---
 .../designercore/instances/objectnodeinstance.cpp  | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp
index f0df1560c10..e52ca995d7c 100644
--- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp
@@ -123,13 +123,15 @@ void ObjectNodeInstance::destroy()
 {
     if (deleteHeldInstance()) {
         // Remove from old property
-        if (object() && modelNode().isValid() && modelNode().parentProperty().isValid()) {
+        if (object()) {
             setId(QString());
-            NodeAbstractProperty parentProperty = modelNode().parentProperty();
-            ModelNode parentNode = parentProperty.parentModelNode();
-            if (parentNode.isValid() && nodeInstanceView()->hasInstanceForNode(parentNode)) {
-                NodeInstance parentInstance = nodeInstanceView()->instanceForNode(parentNode);
-                reparent(parentInstance, parentProperty.name(), NodeInstance() , QString());
+            if (modelNode().isValid() && modelNode().parentProperty().isValid()) {
+                NodeAbstractProperty parentProperty = modelNode().parentProperty();
+                ModelNode parentNode = parentProperty.parentModelNode();
+                if (parentNode.isValid() && nodeInstanceView()->hasInstanceForNode(parentNode)) {
+                    NodeInstance parentInstance = nodeInstanceView()->instanceForNode(parentNode);
+                    reparent(parentInstance, parentProperty.name(), NodeInstance() , QString());
+                }
             }
         }
 
-- 
GitLab