diff --git a/kde/src/CallView.cpp b/kde/src/CallView.cpp
index 7fdf6151a20d24d8bcf909cc3531c9cea171ac0b..ad0ca32bc476846e706332bd8642e9e6758dcc7b 100644
--- a/kde/src/CallView.cpp
+++ b/kde/src/CallView.cpp
@@ -588,9 +588,11 @@ void CallView::destroyCall(Call* toDestroy)
    else if (SFLPhone::model()->getIndex(toDestroy)->parent()) {
       QTreeWidgetItem* callIndex = SFLPhone::model()->getIndex(toDestroy);
       QTreeWidgetItem* parent = callIndex->parent();
-      parent->removeChild(callIndex);
-      if (dynamic_cast<QTreeWidgetItem*>(parent) && parent->childCount() == 0) /*This should never happen, but it does*/
-         takeTopLevelItem(indexOfTopLevelItem(parent));
+      if (indexOfTopLevelItem(parent) != -1) {
+         parent->removeChild(callIndex);
+         if (dynamic_cast<QTreeWidgetItem*>(parent) && parent->childCount() == 0) /*This should never happen, but it does*/
+            takeTopLevelItem(indexOfTopLevelItem(parent));
+      }
    }
    else
       kDebug() << "Call not found";