diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2017-11-25 08:52:40 +0000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2017-11-25 08:52:40 +0000 |
commit | ea18eec931202f500e538223963b4949c066358a (patch) | |
tree | 20e1528c591901408e4a7665b5a6584b4025317b /src/corelib | |
parent | 3587a25238b5c0a53285f96383ed0af1c05b3153 (diff) | |
parent | 19378fa00884230fc9539e8cb881d4f75e67a83f (diff) |
Merge "Merge remote-tracking branch 'origin/5.9.3' into 5.9" into refs/staging/5.9
Diffstat (limited to 'src/corelib')
-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 ce0c1c91df..f63a08774c 100644 --- a/src/corelib/thread/qsemaphore.cpp +++ b/src/corelib/thread/qsemaphore.cpp @@ -214,13 +214,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(); |