From 28c1e17aef520abfa051c7d9a9fe0f45ec6a5db8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 6 Nov 2017 14:31:29 +0100 Subject: [PATCH] QWinEventNotifier: Fix exit crash Make sure the wait handle is unregistered even though there is no event dispatcher in QWinEventNotifier::setEnabled(). Task-number: QTBUG-64152 Task-number: QTCREATORBUG-19175 Change-Id: I608b95adc7cb874bc52dc5bf0e9f51b443b54ebc Reviewed-by: Orgad Shaneh Reviewed-by: Joerg Bornemann --- src/corelib/kernel/qwineventnotifier.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index 362111a2c8c..24de491326f 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -199,8 +199,11 @@ void QWinEventNotifier::setEnabled(bool enable) d->enabled = enable; QAbstractEventDispatcher *eventDispatcher = d->threadData->eventDispatcher.load(); - if (!eventDispatcher) // perhaps application is shutting down + if (!eventDispatcher) { // perhaps application is shutting down + if (!enable && d->waitHandle != nullptr) + d->unregisterWaitObject(); return; + } if (Q_UNLIKELY(thread() != QThread::currentThread())) { qWarning("QWinEventNotifier: Event notifiers cannot be enabled or disabled from another thread"); return;