From 4683b0b57f0571e400ab0ed48530ad8c6171d9f6 Mon Sep 17 00:00:00 2001 From: Jani Hautakangas Date: Mon, 16 Jun 2014 00:32:15 +0300 Subject: [PATCH] webOS: Fix allocateTimerId MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8b3777f4035401763d86b0245de43b63573b9ea6 Reviewed-by: Thiago Macieira Reviewed-by: MÃ¥rten Nordheim --- src/corelib/kernel/qabstracteventdispatcher.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp index 685a0c595ae..b2bc199c8c4 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)