From af7b39e3a7d0109a79562c856a5c2ec98bd49c21 Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Mon, 25 Oct 2010 17:26:41 +0200
Subject: [PATCH] Qt4ProjectManager: Add some safety code

Might, or might not fix
Task-Nr: QTCREATORBUG-2361
---
 src/plugins/qt4projectmanager/qt4nodes.cpp   | 1 +
 src/plugins/qt4projectmanager/qt4project.cpp | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index a48fd03e2a7..20de05d7766 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -1299,6 +1299,7 @@ void Qt4ProFileNode::asyncUpdate()
 {
     m_project->incrementPendingEvaluateFutures();
     setupReader();
+    m_parseFutureWatcher.waitForFinished();
     QFuture<bool> future = QtConcurrent::run(&Qt4ProFileNode::asyncEvaluate, this);
     m_parseFutureWatcher.setFuture(future);
 }
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 7758d40080c..534b1c77c18 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -628,6 +628,8 @@ void Qt4Project::update()
 
 void Qt4Project::scheduleAsyncUpdate(Qt4ProFileNode *node)
 {
+    if (m_asyncUpdateState == ShuttingDown)
+        return;
     if (debug)
         qDebug()<<"schduleAsyncUpdate (node)";
     Q_ASSERT(m_asyncUpdateState != NoState);
@@ -694,6 +696,8 @@ void Qt4Project::scheduleAsyncUpdate()
 {
     if (debug)
         qDebug()<<"scheduleAsyncUpdate";
+    if (m_asyncUpdateState == ShuttingDown)
+        return;
     Q_ASSERT(m_asyncUpdateState != NoState);
     if (m_cancelEvaluate) { // we are in progress of canceling
                             // and will start the evaluation after that
-- 
GitLab