diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2012-08-16 16:49:38 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-28 21:18:17 +0200 |
commit | 20993adffdad15b636996d20a39c91a0abd397a8 (patch) | |
tree | 6934ca6628c1eac949285df09880586e1408d842 /tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp | |
parent | 0680627d7f7384559e04f7440f6becbf1417276f (diff) |
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 <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp')
-rw-r--r-- | tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
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<Data> ptr1 = QSharedPointer<Data>(aData);\n" "QSharedPointer<Data> ptr2 = QSharedPointer<Data>(aData);\n"; + // two QObjects with the same pointer + QTest::newRow("same-pointer-to-qobject") + << &QTest::QExternalTest::tryRunFail + << "QObject *anObj = new QObject;\n" + "QSharedPointer<QObject> ptr1 = QSharedPointer<QObject>(anObj);\n" + "QSharedPointer<QObject> ptr2 = QSharedPointer<QObject>(anObj);\n"; + // re-creation: QTest::newRow("re-creation") << &QTest::QExternalTest::tryRunFail |