From 0d336ab3132c85781fc62b9d92dce690b8ff9d59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Wed, 21 Aug 2019 17:19:34 +0200 Subject: QNetworkConnectionMonitor(win): Fix memory leak Through some misconceptions about ComPtr I ended up thinking that it did not call AddRef internally on creation. But it does. This lead to always having > 1 ref-counter. Also stop the monitor on destruction if it hasn't already been stopped. As was already done for QNetworkStatusMonitorPrivate. Change-Id: Ic72a2f5cb3325f86c018f90b497caaec834cb214 Reviewed-by: Timur Pocheptsov --- src/network/kernel/qnetconmonitor_win.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/network/kernel/qnetconmonitor_win.cpp b/src/network/kernel/qnetconmonitor_win.cpp index f9d660d738..a010df8e3a 100644 --- a/src/network/kernel/qnetconmonitor_win.cpp +++ b/src/network/kernel/qnetconmonitor_win.cpp @@ -139,7 +139,7 @@ private: QNetworkConnectionMonitorPrivate *monitor = nullptr; - QAtomicInteger ref = 1; // start at 1 for our own initial reference + QAtomicInteger ref = 0; DWORD cookie = 0; }; @@ -346,6 +346,8 @@ QNetworkConnectionMonitorPrivate::~QNetworkConnectionMonitorPrivate() { if (comInitFailed) return; + if (monitoring) + stopMonitoring(); connectionEvents.Reset(); CoUninitialize(); } @@ -496,7 +498,7 @@ private: QNetworkStatusMonitorPrivate *monitor = nullptr; - QAtomicInteger ref = 1; // start at 1 for our own initial reference + QAtomicInteger ref = 0; DWORD cookie = 0; }; -- cgit v1.2.3