diff options
author | Morten Johan Sørvig <morten.sorvig@qt.io> | 2020-12-09 16:31:41 +0100 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@qt.io> | 2020-12-21 22:48:29 +0000 |
commit | b3b95670b2f7e43cfe49fa90f2dffa74b82c160f (patch) | |
tree | c6528b933db54bd942ceb95a54ea44d182f433b9 /src/corelib/thread/qthread_win.cpp | |
parent | cd6d805d9368a0e84cc20a416ab88603c4be6a9c (diff) |
Call QEventDispatcher::startingUp() on thread start
...instead of during createEventDispatcher().
This way, startingUp() will be called [on the thread
being started] also for custom event dispatchers installed
with QThread::setEventDispatcher().
This prevents crashes when installing event dispatches which
expects that startingUp() will be called.
Crash reproducible with test case from QTBUG-51961.
Change-Id: I71bd696539689d928a61ff9b47d05297cf803b2f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/thread/qthread_win.cpp')
-rw-r--r-- | src/corelib/thread/qthread_win.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp index b59a9d1bb4..820ffa1149 100644 --- a/src/corelib/thread/qthread_win.cpp +++ b/src/corelib/thread/qthread_win.cpp @@ -312,6 +312,7 @@ unsigned int __stdcall QT_ENSURE_STACK_ALIGNED_FOR_SSE QThreadPrivate::start(voi } data->ensureEventDispatcher(); + data->eventDispatcher.loadRelaxed()->startingUp(); #if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) // sets the name of the current thread. |