diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index 88d24b6493f..647b64775a4 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -178,7 +178,7 @@ QThreadData *QThreadData::current(bool createIfNecessary) data = new QThreadData; QT_TRY { set_thread_data(data); - data->thread = new QAdoptedThread(data); + data->thread.storeRelease(new QAdoptedThread(data)); } QT_CATCH(...) { clear_thread_data(); data->deref(); diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp index 0fba38d250b..1c5b5bf965a 100644 --- a/src/corelib/thread/qthread_win.cpp +++ b/src/corelib/thread/qthread_win.cpp @@ -76,7 +76,7 @@ QThreadData *QThreadData::current(bool createIfNecessary) // avoid recursion. TlsSetValue(qt_current_thread_data_tls_index, threadData); QT_TRY { - threadData->thread = new QAdoptedThread(threadData); + threadData->thread.storeRelease(new QAdoptedThread(threadData)); } QT_CATCH(...) { TlsSetValue(qt_current_thread_data_tls_index, 0); threadData->deref(); @@ -101,7 +101,7 @@ QThreadData *QThreadData::current(bool createIfNecessary) 0, FALSE, DUPLICATE_SAME_ACCESS); - qt_watch_adopted_thread(realHandle, threadData->thread); + qt_watch_adopted_thread(realHandle, threadData->thread.loadRelaxed()); } } return threadData;