diff options
author | Liang Qi <liang.qi@qt.io> | 2017-11-28 11:23:34 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-11-28 11:23:35 +0100 |
commit | 1139be7b304a52901fbcf9ee9b95c5c7a50054f3 (patch) | |
tree | d1491761623e5c371e6ccff039ee2bb13dcb6828 /src/corelib/thread | |
parent | 6615f1d16b442bbf476d86ab90af1107617945c9 (diff) | |
parent | 5f66f871816d083da9795d71f746413d6f6118f7 (diff) |
Merge remote-tracking branch 'origin/5.9' into 5.10
Change-Id: Iede384644c3df5ee01b701806dfdb586dd6bb138
Diffstat (limited to 'src/corelib/thread')
-rw-r--r-- | src/corelib/thread/qsemaphore.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp index 96c031eec6..37736b3960 100644 --- a/src/corelib/thread/qsemaphore.cpp +++ b/src/corelib/thread/qsemaphore.cpp @@ -217,13 +217,15 @@ bool QSemaphore::tryAcquire(int n) bool QSemaphore::tryAcquire(int n, int timeout) { Q_ASSERT_X(n >= 0, "QSemaphore::tryAcquire", "parameter 'n' must be non-negative"); - if (timeout < 0) - return tryAcquire(n); + + // We're documented to accept any negative value as "forever" + // but QDeadlineTimer only accepts -1. + timeout = qMax(timeout, -1); QDeadlineTimer timer(timeout); QMutexLocker locker(&d->mutex); qint64 remainingTime = timer.remainingTime(); - while (n > d->avail && remainingTime > 0) { + while (n > d->avail && remainingTime != 0) { if (!d->cond.wait(locker.mutex(), remainingTime)) return false; remainingTime = timer.remainingTime(); |