From 3f6041fb82be5b60d0ac572f157b9e621efeb825 Mon Sep 17 00:00:00 2001 From: Mike Achtelik Date: Mon, 6 Dec 2021 14:29:33 +0100 Subject: [PATCH] QNetworkAccessBackend: Fix living QObjects after QCoreApplication shutdown MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since switching to the plugin bases system for the network backends, Qt again retains some QObjects after QCoreApplication shutdown. This was previously fixed in QTBUG-84234, so make sure we destroy the newly introduced QObjects as well. Task-number: QTBUG-84234 Change-Id: Ibb411c2dfb716b8f2aea2a3e366253fbd9dd8f64 Reviewed-by: MÃ¥rten Nordheim --- src/network/access/qnetworkaccessbackend.cpp | 6 +++++- src/network/access/qnetworkaccessmanager.cpp | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp index b544e8436b..00032a3084 100644 --- a/src/network/access/qnetworkaccessbackend.cpp +++ b/src/network/access/qnetworkaccessbackend.cpp @@ -849,6 +849,10 @@ QNetworkAccessBackendFactory::QNetworkAccessBackendFactory() /*! Destructs QNetworkAccessBackendFactory */ -QNetworkAccessBackendFactory::~QNetworkAccessBackendFactory() = default; +QNetworkAccessBackendFactory::~QNetworkAccessBackendFactory() +{ + if (factoryData.exists()) + factoryData->removeAll(this); +}; QT_END_NAMESPACE diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 1af2547f3e..230aa40af6 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -80,6 +80,7 @@ #include +#include "QtCore/qapplicationstatic.h" #include #if defined(Q_OS_MACOS) @@ -99,13 +100,13 @@ QT_BEGIN_NAMESPACE -Q_GLOBAL_STATIC(QNetworkAccessFileBackendFactory, fileBackend) +Q_APPLICATION_STATIC(QNetworkAccessFileBackendFactory, fileBackend) #ifdef QT_BUILD_INTERNAL Q_GLOBAL_STATIC(QNetworkAccessDebugPipeBackendFactory, debugpipeBackend) #endif -Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, +Q_APPLICATION_STATIC_WITH_ARGS(QFactoryLoader, loader, (QNetworkAccessBackendFactory_iid, QLatin1String("/networkaccess"))) #if defined(Q_OS_MACOS)