summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-08-12 21:12:36 +0200
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-08-13 16:33:00 +0200
commitb64b4431c20afd9e39c1463e736f998ef450688f (patch)
tree2148881f75ac779a094d3e36ff1c6b7bb8857037 /src/shared
parentaf8a95d1fc66c42f4877c8f18c7bd10b9f2483d4 (diff)
downloadqt-creator-b64b4431c20afd9e39c1463e736f998ef450688f.tar.gz
avoid deadlock in cache() during spec/cache loading
if we end up calling cache() from within the initialization of the base context, we cannot wait for for the completion of that initialization before we proceed, obviously. Change-Id: If30c6f3665fe423e767373a8821c406b2f5e0eca Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/proparser/qmakebuiltins.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/shared/proparser/qmakebuiltins.cpp b/src/shared/proparser/qmakebuiltins.cpp
index 90512b1a5b..0f60a5c4ee 100644
--- a/src/shared/proparser/qmakebuiltins.cpp
+++ b/src/shared/proparser/qmakebuiltins.cpp
@@ -1544,7 +1544,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
break;
#ifdef PROEVALUATOR_THREAD_SAFE
QMutexLocker locker(&baseEnv->mutex);
- if (baseEnv->inProgress) {
+ if (baseEnv->inProgress && baseEnv->evaluator != this) {
// The env is still in the works, but it may be already past the cache
// loading. So we need to wait for completion and amend it as usual.
QThreadPool::globalInstance()->releaseThread();