From e0d8186438ec69fe41f278ba821330c7c86f2025 Mon Sep 17 00:00:00 2001 From: xavier Date: Sat, 1 Oct 2011 19:22:30 +0000 Subject: [PATCH] Fixed a segfault that could occur when removing a diagram from a project. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@1347 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/elementspanel.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/sources/elementspanel.cpp b/sources/elementspanel.cpp index a768abc1b..027a88a87 100644 --- a/sources/elementspanel.cpp +++ b/sources/elementspanel.cpp @@ -307,7 +307,8 @@ bool ElementsPanel::selectedItemIsAProject() const { @return true si un schema est selectionne, false sinon */ bool ElementsPanel::selectedItemIsADiagram() const { - return(diagrams_.contains(currentItem())); + QTreeWidgetItem *current = currentItem(); + return(diagrams_.contains(current)); } /** @@ -890,11 +891,6 @@ QTreeWidgetItem *ElementsPanel::findLocation(const QString &location) const { void ElementsPanel::deleteItem(QTreeWidgetItem *removed_item) { if (!removed_item) return; - // supprime les eventuels enfants de l'item - foreach(QTreeWidgetItem *child_item, removed_item -> takeChildren()) { - deleteItem(child_item); - } - if (locations_.contains(removed_item)) { locations_.remove(removed_item); } else if (diagrams_.contains(removed_item)) { @@ -904,6 +900,12 @@ void ElementsPanel::deleteItem(QTreeWidgetItem *removed_item) { } else if (title_blocks_directories_.contains(removed_item)) { title_blocks_directories_.remove(removed_item); } + + // supprime les eventuels enfants de l'item + foreach(QTreeWidgetItem *child_item, removed_item -> takeChildren()) { + deleteItem(child_item); + } + delete removed_item; }