From 4b340402b97b83790b3d71a8244a246eec4f8abd Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Tue, 1 Sep 2015 08:49:31 +0200 Subject: WinRT: Fixed possible integer overflow in timer registration code Task-number: QTBUG-48012 Change-Id: If1b80e59c13230bc0a62c6fa3d45b6e2272b9e28 Reviewed-by: Andrew Knight --- src/corelib/kernel/qeventdispatcher_winrt.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/corelib') diff --git a/src/corelib/kernel/qeventdispatcher_winrt.cpp b/src/corelib/kernel/qeventdispatcher_winrt.cpp index f771974a24..490a7c566a 100644 --- a/src/corelib/kernel/qeventdispatcher_winrt.cpp +++ b/src/corelib/kernel/qeventdispatcher_winrt.cpp @@ -288,7 +288,8 @@ void QEventDispatcherWinRT::registerTimer(int timerId, int interval, Qt::TimerTy } TimeSpan period; - period.Duration = interval ? (interval * 10000) : 1; // TimeSpan is based on 100-nanosecond units + // TimeSpan is based on 100-nanosecond units + period.Duration = qMax(qint64(1), qint64(interval) * 10000); const HANDLE handle = CreateEventEx(NULL, NULL, CREATE_EVENT_MANUAL_RESET, SYNCHRONIZE | EVENT_MODIFY_STATE); const HANDLE cancelHandle = CreateEventEx(NULL, NULL, CREATE_EVENT_MANUAL_RESET, SYNCHRONIZE|EVENT_MODIFY_STATE); HRESULT hr = runOnXamlThread([&]() { -- cgit v1.2.3