tst_QNetworkReply: don't use deleteLater() on QSignalSpies

Turn the QSignalSpy deletions from deferred (via deleteLater()) into
immediate ones. This is ok: QSignalSpy is using itself as a context
object in QMetaObject::connect(), so the connection thus established
to the monitored signal will be atomically severed if either sender or
receiver are destroyed. There never was a need to defer deletion of
the signal spy, so don't.

Found by making QSignalSpy's inheritance from QObject private.

Pick-to: 6.5
Change-Id: I962d28c3a78f356d234324fed68716f2f1052100
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit eefd8ab1e8e4d6afa64e15c017e1e78fd30c7382)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit b7dd49682bf0cfe205ef774b075a5d98aea84616)
This commit is contained in:
Marc Mutz 2024-03-19 18:31:28 +01:00 committed by Qt Cherry-pick Bot
parent ecfec47c50
commit d35c221983

View File

@ -8430,9 +8430,9 @@ void tst_QNetworkReply::emitErrorForAllReplies() // QTBUG-36890
for (int a = 0; a < urls.size(); ++a) {
QVERIFY(replies.at(a)->isFinished());
QCOMPARE(errorSpies.at(a)->size(), 1);
errorSpies.at(a)->deleteLater();
delete errorSpies.at(a);
QCOMPARE(finishedSpies.at(a)->size(), 1);
finishedSpies.at(a)->deleteLater();
delete finishedSpies.at(a);
replies.at(a)->deleteLater();
}
}