Skip to content

Commit 97b85f4

Browse files
author
Andy Shaw
committed
QThread: fix race when setting the eventDispatcher
Use QMutexLocker to make this thread-safe. Task-number: QTBUG-29452 (cherry picked and adapted from qtbase/f4609b202208fe592d24c7ae3b4a48ee83045497) Change-Id: I5caf71d9a5dc6e3d655eac84426a0c5592772235 Reviewed-by: Louai Al-Khanji <[email protected]>
1 parent 6d5a2db commit 97b85f4

File tree

3 files changed

+7
-0
lines changed

3 files changed

+7
-0
lines changed

src/corelib/thread/qthread_symbian.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,9 @@ typedef void*(*QtThreadCallback)(void*);
336336

337337
void QThreadPrivate::createEventDispatcher(QThreadData *data)
338338
{
339+
QMutexLocker l(&data->postEventList.mutex);
339340
data->eventDispatcher = new QEventDispatcherSymbian;
341+
l.unlock();
340342
data->eventDispatcher->startingUp();
341343
}
342344

src/corelib/thread/qthread_unix.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ typedef void*(*QtThreadCallback)(void*);
273273

274274
void QThreadPrivate::createEventDispatcher(QThreadData *data)
275275
{
276+
QMutexLocker l(&data->postEventList.mutex);
277+
276278
#if defined(Q_OS_BLACKBERRY)
277279
data->eventDispatcher = new QEventDispatcherBlackberry;
278280
#else
@@ -286,6 +288,7 @@ void QThreadPrivate::createEventDispatcher(QThreadData *data)
286288
data->eventDispatcher = new QEventDispatcherUNIX;
287289
#endif
288290

291+
l.unlock();
289292
data->eventDispatcher->startingUp();
290293
}
291294

src/corelib/thread/qthread_win.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,9 @@ void qt_set_thread_name(HANDLE threadId, LPCSTR threadName)
318318

319319
void QThreadPrivate::createEventDispatcher(QThreadData *data)
320320
{
321+
QMutexLocker l(&data->postEventList.mutex);
321322
data->eventDispatcher = new QEventDispatcherWin32;
323+
l.unlock();
322324
data->eventDispatcher->startingUp();
323325
}
324326

0 commit comments

Comments
 (0)