From b7179d6f284e277b84c54226be05832a25576387 Mon Sep 17 00:00:00 2001 From: mread Date: Tue, 18 Oct 2011 13:45:28 +0100 Subject: Fixed access to null threadData in ~QObjectPrivate If a class derived from QObjectPrivate throws an exception in its constructor, ~QObjectPrivate will be invoked with threadData being null. This change tests for null before accessing threadData. Task-number: QTBUG-4871 incidental finding Reviewed-by: Shane Kearns --- src/corelib/kernel/qobject.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 5d6e4d7..1f716bc 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -163,14 +163,15 @@ QObjectPrivate::~QObjectPrivate() { if (pendTimer) { // unregister pending timers - if (threadData->eventDispatcher) + if (threadData && threadData->eventDispatcher) threadData->eventDispatcher->unregisterTimers(q_ptr); } if (postedEvents) QCoreApplication::removePostedEvents(q_ptr, 0); - threadData->deref(); + if (threadData) + threadData->deref(); delete static_cast(metaObject); #ifdef QT_JAMBI_BUILD -- cgit v0.12