From 756fba0dfbb4e5ad9fae07ba24d903cb986cec99 Mon Sep 17 00:00:00 2001
From: Nikolai Kosjar <nikolai.kosjar@digia.com>
Date: Mon, 6 Oct 2014 15:18:26 +0200
Subject: [PATCH] CppTools: Use mutex when accessing m_fileToProjectParts

projectPartFromDependencies() is also called from another thread.

Change-Id: Ic1319569d1b9b934a1be0916caa2e5bd68dce4fb
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
---
 src/plugins/cpptools/cppmodelmanager.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index d67fab8bd53..a33e595a72b 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -811,8 +811,12 @@ QList<ProjectPart::Ptr> CppModelManager::projectPartFromDependencies(const QStri
 {
     QSet<ProjectPart::Ptr> parts;
     const QStringList deps = snapshot().filesDependingOn(fileName);
-    foreach (const QString &dep, deps)
-        parts.unite(QSet<ProjectPart::Ptr>::fromList(d->m_fileToProjectParts.value(dep)));
+
+    {
+        QMutexLocker locker(&d->m_projectMutex);
+        foreach (const QString &dep, deps)
+            parts.unite(QSet<ProjectPart::Ptr>::fromList(d->m_fileToProjectParts.value(dep)));
+    }
 
     return parts.values();
 }
-- 
GitLab