aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-07-25 16:36:14 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-28 13:50:47 +0200
commit6a9f052d3df8d8a73a936f0b6dde540eee4f1955 (patch)
tree45bd89749da08154dcacfab3dce9b85ea3ffa4bb
parentce88ad58bcd39a51ece85f274a85feab132bc044 (diff)
Correct handling of project re-resolving with a new build root.
In that case, we must ignore the existing project. In particular, we must acquire a new build graph lock, as the existing one protects a different build graph file. Change-Id: I6f84d207959c94d082d9966c85d7b86a14ecfeb3 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--src/lib/corelib/api/internaljobs.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/lib/corelib/api/internaljobs.cpp b/src/lib/corelib/api/internaljobs.cpp
index f9159146d..93adeeef1 100644
--- a/src/lib/corelib/api/internaljobs.cpp
+++ b/src/lib/corelib/api/internaljobs.cpp
@@ -230,11 +230,13 @@ void InternalSetupProjectJob::start()
const ErrorInfo err = m_parameters.expandBuildConfiguration();
if (err.hasError())
throw err;
- if (!bgLocker) {
- const QString projectId = TopLevelProject::deriveId(m_parameters.topLevelProfile(),
- m_parameters.finalBuildConfigurationTree());
- const QString buildDir
- = TopLevelProject::deriveBuildDirectory(m_parameters.buildRoot(), projectId);
+ const QString projectId = TopLevelProject::deriveId(m_parameters.topLevelProfile(),
+ m_parameters.finalBuildConfigurationTree());
+ const QString buildDir
+ = TopLevelProject::deriveBuildDirectory(m_parameters.buildRoot(), projectId);
+ if (m_existingProject && m_existingProject->buildDirectory != buildDir)
+ m_existingProject.clear();
+ if (!m_existingProject) {
bgLocker = new BuildGraphLocker(ProjectBuildData::deriveBuildGraphFilePath(buildDir,
projectId));
}