diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 971d262b7fbb506d63e6003183b6dd6fab0162e8..b784e8a8ebcb628085df57bbdf915b844c58b382 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -290,8 +290,8 @@ void ProjectWindow::projectUpdated(Project *p)
 {
     // Called after a project was configured
     int index = m_tabWidget->currentIndex();
-    deregisterProject(p);
-    registerProject(p);
+    if (deregisterProject(p)) // might return false if the project is unloading
+        registerProject(p);
     m_tabWidget->setCurrentIndex(index);
 }
 
@@ -303,8 +303,8 @@ void ProjectWindow::handleKitChanges()
     foreach (ProjectExplorer::Project *project, projects) {
         if (m_hasTarget.value(project) != hasTarget(project)) {
             changed = true;
-            deregisterProject(project);
-            registerProject(project);
+            if (deregisterProject(project))
+                registerProject(project);
         }
     }
     if (changed)
@@ -354,16 +354,17 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project)
             this, SLOT(removedTarget(ProjectExplorer::Target*)));
 }
 
-void ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
+bool ProjectWindow::deregisterProject(ProjectExplorer::Project *project)
 {
     int index = m_tabIndexToProject.indexOf(project);
     if (index < 0)
-        return;
+        return false;
 
     m_tabIndexToProject.removeAt(index);
     m_tabWidget->removeTab(index);
     disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)),
             this, SLOT(removedTarget(ProjectExplorer::Target*)));
+    return true;
 }
 
 void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p)
diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h
index a45ea75c00df77c4fcf1b2faa9b44b83cf5f1064..1bb580f072250364d4e600df0116ba3ca8c3eb1e 100644
--- a/src/plugins/projectexplorer/projectwindow.h
+++ b/src/plugins/projectexplorer/projectwindow.h
@@ -89,7 +89,7 @@ private slots:
     void handleKitChanges();
     void showProperties(int index, int subIndex);
     void registerProject(ProjectExplorer::Project*);
-    void deregisterProject(ProjectExplorer::Project*);
+    bool deregisterProject(ProjectExplorer::Project*);
     void startupProjectChanged(ProjectExplorer::Project *);
     void removedTarget(ProjectExplorer::Target*);