summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qabstracteventdispatcher.cpp
diff options
context:
space:
mode:
authorJani Hautakangas <jani.hautakangas@lge.com>2014-06-16 00:32:15 +0300
committerJaeyoon Jung <jaeyoon.jung@lge.com>2020-05-18 17:20:15 +0900
commit4683b0b57f0571e400ab0ed48530ad8c6171d9f6 (patch)
tree4f4f33bb9b3487ebdd8bfc3c51dd547bceaa8282 /src/corelib/kernel/qabstracteventdispatcher.cpp
parent8a11641bb9709b2c6cb5051163eb5086838c8fac (diff)
webOS: Fix allocateTimerId
Change-Id: I8b3777f4035401763d86b0245de43b63573b9ea6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/corelib/kernel/qabstracteventdispatcher.cpp')
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp
index 685a0c595a..b2bc199c8c 100644
--- a/src/corelib/kernel/qabstracteventdispatcher.cpp
+++ b/src/corelib/kernel/qabstracteventdispatcher.cpp
@@ -90,7 +90,14 @@ Q_GLOBAL_STATIC(QtTimerIdFreeList, timerIdFreeList)
int QAbstractEventDispatcherPrivate::allocateTimerId()
{
- return timerIdFreeList()->next();
+ // This function may be called after timerIdFreeList() has been destructed
+ // for example in case when application exits without waiting for
+ // running threads to exit and running thread finished() has been connected
+ // to a slot which triggers a sequence that registers new timer.
+ // See https://bugreports.qt-project.org/browse/QTBUG-38957.
+ if (QtTimerIdFreeList *fl = timerIdFreeList())
+ return fl->next();
+ return 0; // Note! returning 0 generates a warning
}
void QAbstractEventDispatcherPrivate::releaseTimerId(int timerId)