diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/corelib/api/internaljobs.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/corelib/api/internaljobs.cpp b/src/lib/corelib/api/internaljobs.cpp index d9b97329a..9bb619db5 100644 --- a/src/lib/corelib/api/internaljobs.cpp +++ b/src/lib/corelib/api/internaljobs.cpp @@ -237,8 +237,8 @@ TopLevelProjectPtr InternalSetupProjectJob::project() const void InternalSetupProjectJob::start() { - const TopLevelProjectConstPtr existingProject = m_existingProject; BuildGraphLocker *bgLocker = m_existingProject ? m_existingProject->bgLocker : 0; + bool deleteLocker = false; try { const ErrorInfo err = m_parameters.expandBuildConfiguration(); if (err.hasError()) @@ -253,17 +253,19 @@ void InternalSetupProjectJob::start() bgLocker = new BuildGraphLocker(ProjectBuildData::deriveBuildGraphFilePath(buildDir, projectId), logger(), m_parameters.waitLockBuildGraph(), observer()); + deleteLocker = true; } execute(); if (m_existingProject) m_existingProject->bgLocker = 0; m_newProject->bgLocker = bgLocker; + deleteLocker = false; } catch (const ErrorInfo &error) { m_newProject.clear(); setError(error); // Delete the build graph locker if and only if we allocated it here. - if (!existingProject) + if (deleteLocker) delete bgLocker; } emit finished(this); |