QWinEventNotifier: fix crash on application shutdown

The event dispatcher can be null already but we may have outstanding
QWinEventNotifier objects (like in a QProcess).

Patch-By: Tamas Karpati
Task-number: QTBUG-70214
Change-Id: I5e432e273def425ea334fffd154f34abfd6cb11a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
bb10
Thiago Macieira 2018-08-28 17:51:51 -07:00
parent 44eeeb8e81
commit 948f8ce2ec
1 changed files with 8 additions and 0 deletions

View File

@ -256,6 +256,14 @@ static void CALLBACK wfsoCallback(void *context, BOOLEAN /*ignore*/)
{
QWinEventNotifierPrivate *nd = reinterpret_cast<QWinEventNotifierPrivate *>(context);
QAbstractEventDispatcher *eventDispatcher = nd->threadData->eventDispatcher.load();
// Happens when Q(Core)Application is destroyed before QWinEventNotifier.
// https://bugreports.qt.io/browse/QTBUG-70214
if (!eventDispatcher) { // perhaps application is shutting down
qWarning("QWinEventNotifier: no event dispatcher, application shutting down? Cannot deliver event.");
return;
}
QEventDispatcherWin32Private *edp = QEventDispatcherWin32Private::get(
static_cast<QEventDispatcherWin32 *>(eventDispatcher));
++nd->signaledCount;