From 7dc622290bb8e81af634034f443e25be0d6d48a3 Mon Sep 17 00:00:00 2001 From: jian liang Date: Thu, 21 Mar 2013 23:24:36 +0800 Subject: [PATCH] Make sure QThreadData and QAdoptedThread object is destroyed at app exit Task-number: QTBUG-30134 Restore the lines in qcoreapplication.cpp removed by commit 950b35cf97ad398f97883efd2a18ee97994a8a9c to ensure QThreadData and QAdoptedThread object of main thread is destroyed at application exit. We don't set QCoreApplicationPriavte::theMainThread to 0 as before since it will be set to zero in QThreadData::~QThreadData() Change-Id: I8ee56aff5a933ce1d812b07fb00a29ed0839ab6e Reviewed-by: Olivier Goffart Reviewed-by: Thiago Macieira --- src/corelib/kernel/qcoreapplication.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 61a8b6a18c..100e014e99 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -317,6 +317,13 @@ struct QCoreApplicationData { ~QCoreApplicationData() { #ifndef QT_NO_LIBRARY delete app_libpaths; +#endif +#ifndef QT_NO_QOBJECT + // cleanup the QAdoptedThread created for the main() thread + if (QCoreApplicationPrivate::theMainThread) { + QThreadData *data = QThreadData::get2(QCoreApplicationPrivate::theMainThread); + data->deref(); // deletes the data and the adopted thread + } #endif }