From 20993adffdad15b636996d20a39c91a0abd397a8 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Thu, 16 Aug 2012 16:49:38 +0100 Subject: QSharedPointer: make QT_SHAREDPOINTER_TRACK_POINTERS work with QObjects If setQObjectShared crashes because a QObject is tracked by two different QSharedPointers, we lose the debug feature offered by #defining QT_SHAREDPOINTER_TRACK_POINTERS, as the check done by this define happens after the setQObjectShared call. Therefore, move setQObjectShared after the internalSafetyCheckAdd call. This is actually a noop change in 5.0, as setQObjectShared does nothing. However it prevents a bug in case the Qt 4 behaviour is brought back in some later version. Change-Id: I71340d0f878828354537762d01c46d441efc918c Reviewed-by: Thiago Macieira --- tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp') diff --git a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp index 6896b328d0..f38df1e42f 100644 --- a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp +++ b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp @@ -1760,6 +1760,13 @@ void tst_QSharedPointer::invalidConstructs_data() "QSharedPointer ptr1 = QSharedPointer(aData);\n" "QSharedPointer ptr2 = QSharedPointer(aData);\n"; + // two QObjects with the same pointer + QTest::newRow("same-pointer-to-qobject") + << &QTest::QExternalTest::tryRunFail + << "QObject *anObj = new QObject;\n" + "QSharedPointer ptr1 = QSharedPointer(anObj);\n" + "QSharedPointer ptr2 = QSharedPointer(anObj);\n"; + // re-creation: QTest::newRow("re-creation") << &QTest::QExternalTest::tryRunFail -- cgit v1.2.3