diff options
author | Konstantin Shegunov <kshegunov@gmail.com> | 2018-08-01 00:50:14 +0300 |
---|---|---|
committer | Konstantin Shegunov <kshegunov@gmail.com> | 2019-05-08 17:19:44 +0000 |
commit | c6bee8e4b2c48775247c67ef8e7569f623655c61 (patch) | |
tree | a3bfc28da2b37935129ebf16425de58336e3a0e6 /src/corelib/kernel/qdeadlinetimer.h | |
parent | 8adcfa8b240876236f08ad826e6d77ff1f5e9a96 (diff) |
Fix integer overflows in QDeadlineTimer
If the deadline is far in the future, the conversions to nanoseconds
or internal arithmetic may overflow and give an invalid object, thus
the deadline may end up in the past. Added a test to the testlib
selftest for sleep.
[ChangeLog][QtCore][QDeadlineTimer] Fixed integer overflows
leading to immediate timeouts.
Task-number: QTBUG-69750
Change-Id: I9814eccdf9f9b3add9ca66ec3e27e10cd5ad54a8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qdeadlinetimer.h')
-rw-r--r-- | src/corelib/kernel/qdeadlinetimer.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/corelib/kernel/qdeadlinetimer.h b/src/corelib/kernel/qdeadlinetimer.h index 1a4ee04a96..f9ad4063e5 100644 --- a/src/corelib/kernel/qdeadlinetimer.h +++ b/src/corelib/kernel/qdeadlinetimer.h @@ -108,8 +108,7 @@ public: friend bool operator>=(QDeadlineTimer d1, QDeadlineTimer d2) Q_DECL_NOTHROW { return !(d1 < d2); } - friend QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs) - { return QDeadlineTimer::addNSecs(dt, msecs * 1000 * 1000); } + friend Q_CORE_EXPORT QDeadlineTimer operator+(QDeadlineTimer dt, qint64 msecs); friend QDeadlineTimer operator+(qint64 msecs, QDeadlineTimer dt) { return dt + msecs; } friend QDeadlineTimer operator-(QDeadlineTimer dt, qint64 msecs) |