diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-25 16:36:14 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-28 13:50:47 +0200 |
commit | 6a9f052d3df8d8a73a936f0b6dde540eee4f1955 (patch) | |
tree | 45bd89749da08154dcacfab3dce9b85ea3ffa4bb | |
parent | ce88ad58bcd39a51ece85f274a85feab132bc044 (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.cpp | 12 |
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)); } |