From a9ef3e5989e1a6f96f22b7224c51d546390da2e8 Mon Sep 17 00:00:00 2001 From: Pan Block Date: Wed, 27 May 2026 15:09:02 -0700 Subject: [PATCH 1/2] --atl --- lib/pal/desktop/NetworkDetector.cpp | 35 +++++++++++++++++++++++------ lib/pal/desktop/NetworkDetector.hpp | 7 ------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/pal/desktop/NetworkDetector.cpp b/lib/pal/desktop/NetworkDetector.cpp index ee99b7bc3..1edec8395 100644 --- a/lib/pal/desktop/NetworkDetector.cpp +++ b/lib/pal/desktop/NetworkDetector.cpp @@ -233,14 +233,35 @@ namespace MAT_NS_BEGIN /// HRESULT NetworkDetector::QueryInterface(REFIID riid, void ** ppv) noexcept { - static const QITAB rgqit[] = + HRESULT hr; + + if (IID_INetworkEvents == riid) { - QITABENT(NetworkDetector, INetworkEvents), - QITABENT(NetworkDetector, INetworkConnectionEvents), - QITABENT(NetworkDetector, INetworkListManagerEvents), - { nullptr,0 } - }; - return QISearch(this, rgqit, riid, ppv); + *ppv = static_cast(this); + hr = S_OK; + } + else if (IID_INetworkConnectionEvents == riid) + { + *ppv = static_cast(this); + hr = S_OK; + } + else if (IID_INetworkListManagerEvents == riid) + { + *ppv = static_cast(this); + hr = S_OK; + } + else if (IID_IUnknown == riid) + { + *ppv = static_cast(static_cast(this)); + hr = S_OK; + } + else + { + *ppv = nullptr; + hr = E_NOINTERFACE; + } + + return hr; } ULONG NetworkDetector::AddRef(void) noexcept diff --git a/lib/pal/desktop/NetworkDetector.hpp b/lib/pal/desktop/NetworkDetector.hpp index 66f8b6ae8..1404334b4 100644 --- a/lib/pal/desktop/NetworkDetector.hpp +++ b/lib/pal/desktop/NetworkDetector.hpp @@ -30,13 +30,6 @@ #include #include -// ATL exceptions expose header incompatibilities with Edge's build, using libc++ -#ifndef _ATL_NO_EXCEPTIONS -#define _ATL_NO_EXCEPTIONS -#endif - -#include - #include #include #include From 986276bfe671ef2eb35f6165b5366eeadc3f37ed Mon Sep 17 00:00:00 2001 From: Pan Block Date: Wed, 27 May 2026 19:48:38 -0700 Subject: [PATCH 2/2] pr --- lib/pal/desktop/NetworkDetector.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/pal/desktop/NetworkDetector.cpp b/lib/pal/desktop/NetworkDetector.cpp index 1edec8395..f1a90e5b8 100644 --- a/lib/pal/desktop/NetworkDetector.cpp +++ b/lib/pal/desktop/NetworkDetector.cpp @@ -233,7 +233,13 @@ namespace MAT_NS_BEGIN /// HRESULT NetworkDetector::QueryInterface(REFIID riid, void ** ppv) noexcept { - HRESULT hr; + if (!ppv) + { + return E_POINTER; + } + + *ppv = nullptr; + HRESULT hr = E_NOINTERFACE; if (IID_INetworkEvents == riid) { @@ -255,10 +261,10 @@ namespace MAT_NS_BEGIN *ppv = static_cast(static_cast(this)); hr = S_OK; } - else + + if (SUCCEEDED(hr)) { - *ppv = nullptr; - hr = E_NOINTERFACE; + AddRef(); } return hr;