From d6b27f372b1cf37c8aaa7e7ab935095057407732 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 14 Dec 2023 11:23:25 +0100 Subject: [PATCH] CompilerExplorer: Un-static NetworkAccessManager We have seen crashes on Windows when the static network access manager is deleted (with a "dev" version of Qt). Out of an abundance of caution this patch changes the Network access manager to be owned by the actual settings object. Change-Id: I999a15d99315019b3e5f4ed330a4ac058849f066 Reviewed-by: David Schulz Reviewed-by: --- src/plugins/compilerexplorer/compilerexplorersettings.cpp | 3 +-- src/plugins/compilerexplorer/compilerexplorersettings.h | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/plugins/compilerexplorer/compilerexplorersettings.cpp b/src/plugins/compilerexplorer/compilerexplorersettings.cpp index a93508b5e4e..defa10ff698 100644 --- a/src/plugins/compilerexplorer/compilerexplorersettings.cpp +++ b/src/plugins/compilerexplorer/compilerexplorersettings.cpp @@ -306,8 +306,7 @@ CompilerExplorerSettings::CompilerExplorerSettings() { setAutoApply(false); setSettingsKey("CompilerExplorer"); - static QNetworkAccessManager networkManager; - m_networkAccessManager = &networkManager; + m_networkAccessManager = std::make_unique(); compilerExplorerUrl.setSettingsKey("CompilerExplorerUrl"); compilerExplorerUrl.setLabelText(Tr::tr("Compiler Explorer URL:")); diff --git a/src/plugins/compilerexplorer/compilerexplorersettings.h b/src/plugins/compilerexplorer/compilerexplorersettings.h index dc32dbd8c2d..e196249d117 100644 --- a/src/plugins/compilerexplorer/compilerexplorersettings.h +++ b/src/plugins/compilerexplorer/compilerexplorersettings.h @@ -40,13 +40,11 @@ public: Api::Config apiConfig() const { - return Api::Config(m_networkAccessManager, compilerExplorerUrl()); + return Api::Config(m_networkAccessManager.get(), compilerExplorerUrl()); } - QNetworkAccessManager *networkAccessManager() const { return m_networkAccessManager; } - private: - QNetworkAccessManager *m_networkAccessManager{nullptr}; + std::unique_ptr m_networkAccessManager; }; class SourceSettings : public Utils::AspectContainer,