From ee3933a3ddb032e8d62eb5ac920f9450e7dc2f45 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 6 Nov 2024 05:29:13 -0800 Subject: [PATCH] tst_QObject: don't leak QtDeclarative::theData Pick-to: 6.8 Change-Id: I347f7558a3b278590b11fffdc48877791c29ca60 Reviewed-by: Volker Hilsheimer --- tests/auto/corelib/kernel/qobject/tst_qobject.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index 54dfad183af..4e547bad255 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -8646,25 +8646,25 @@ signals: correctly guarded. QTBUG-105286 */ namespace QtDeclarative { -static QAbstractDeclarativeData *theData; +static std::unique_ptr theData; static void destroyed(QAbstractDeclarativeData *data, QObject *) { - QCOMPARE(data, theData); + QCOMPARE(data, theData.get()); } static void signalEmitted(QAbstractDeclarativeData *data, QObject *, int, void **) { - QCOMPARE(data, theData); + QCOMPARE(data, theData.get()); } // we can't use QCOMPARE in the next two functions, as they don't return void static int receivers(QAbstractDeclarativeData *data, const QObject *, int) { - QTest::qCompare(data, theData, "data", "theData", __FILE__, __LINE__); + QTest::qCompare(data, theData.get(), "data", "theData", __FILE__, __LINE__); return 0; } static bool isSignalConnected(QAbstractDeclarativeData *data, const QObject *, int) { - QTest::qCompare(data, theData, "data", "theData", __FILE__, __LINE__); + QTest::qCompare(data, theData.get(), "data", "theData", __FILE__, __LINE__); return true; } @@ -8705,7 +8705,8 @@ void tst_QObject::declarativeData() QtDeclarative::Object p; QObjectPrivate *priv = QObjectPrivate::get(&p); - priv->declarativeData = QtDeclarative::theData = new QAbstractDeclarativeData; + priv->declarativeData = new QAbstractDeclarativeData; + QtDeclarative::theData.reset(priv->declarativeData); connect(&p, &QtDeclarative::Object::theSignal, &p, []{ });