diff --git a/src/libs/utils/treemodel.cpp b/src/libs/utils/treemodel.cpp
index dda0d6f2e6ce6ad52474bf7fb1051c892545f54c..4390dd5e737ffc0f16dd8c46fb371ea0e3ad04d9 100644
--- a/src/libs/utils/treemodel.cpp
+++ b/src/libs/utils/treemodel.cpp
@@ -624,7 +624,7 @@ TreeItem::TreeItem(const QStringList &displays, int flags)
 
 TreeItem::~TreeItem()
 {
-    clear();
+    removeChildren();
     delete m_displays;
 }
 
@@ -818,6 +818,7 @@ void TreeItem::clear()
 {
     while (m_children.size()) {
         TreeItem *item = m_children.takeLast();
+        item->m_model = 0;
         item->m_parent = 0;
         delete item;
     }