Fix QDeadlineTimer::Forever case in QWaitCondition
The timeout will never be larger than numeric_limits<quint64>::max(), especially on platforms with 32-bit longs. Instead, test if the timeout is exactly numeric_limits<unsigned long>::max(), which matches the ULONG_MAX value which is documented to indicate no timeout. Change-Id: Ib663eddb5703797c50c04fd4eae60bd64f379d1c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>bb10
parent
bf7458c76f
commit
b611eb81c8
|
|
@ -204,7 +204,7 @@ void QWaitCondition::wakeAll()
|
|||
|
||||
bool QWaitCondition::wait(QMutex *mutex, unsigned long time)
|
||||
{
|
||||
if (quint64(time) > quint64(std::numeric_limits<qint64>::max()))
|
||||
if (time == std::numeric_limits<unsigned long>::max())
|
||||
return wait(mutex, QDeadlineTimer(QDeadlineTimer::Forever));
|
||||
return wait(mutex, QDeadlineTimer(time));
|
||||
}
|
||||
|
|
@ -231,6 +231,8 @@ bool QWaitCondition::wait(QMutex *mutex, QDeadlineTimer deadline)
|
|||
|
||||
bool QWaitCondition::wait(QReadWriteLock *readWriteLock, unsigned long time)
|
||||
{
|
||||
if (time == std::numeric_limits<unsigned long>::max())
|
||||
return wait(readWriteLock, QDeadlineTimer(QDeadlineTimer::Forever));
|
||||
return wait(readWriteLock, QDeadlineTimer(time));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue