From a082365d65e4adc2a3526261224d407ef4cdaaff Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@nokia.com>
Date: Tue, 6 Dec 2011 15:13:50 +0100
Subject: [PATCH] Fix crash on removing targets

Reported on irc.

Change-Id: I9e9911fff70c999158b941ab16918af03a51c728
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/projectexplorer/project.cpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 23432b69d68..8962422566c 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -177,17 +177,20 @@ bool Project::removeTarget(Target *target)
     if (bm->isBuilding(target))
         return false;
 
-    emit aboutToRemoveTarget(target);
-
-    d->m_targets.removeOne(target);
-
-    emit removedTarget(target);
     if (target == activeTarget()) {
-        if (d->m_targets.isEmpty())
+        if (d->m_targets.size() == 1) {
             setActiveTarget(0);
-        else
+        } else if (d->m_targets.first() == target) {
+            setActiveTarget(d->m_targets.at(1));
+        } else {
             setActiveTarget(d->m_targets.at(0));
+        }
     }
+
+    emit aboutToRemoveTarget(target);
+    d->m_targets.removeOne(target);
+    emit removedTarget(target);
+
     delete target;
     return true;
 }
-- 
GitLab