summaryrefslogtreecommitdiffstats
path: root/src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp
diff options
context:
space:
mode:
authorMÃ¥rten Nordheim <marten.nordheim@qt.io>2022-11-03 13:40:18 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-11-08 10:27:25 +0000
commit905755304a474c942346774d930b92e3665c1bab (patch)
treef83e2542aa57f34760ad3cdc694765713c52fe38 /src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp
parent58482c63f090dbfdf0c6ad8ee317b24fbefe798e (diff)
QNetworkInformation[Win]: Catch potential exceptionsv6.4.16.4.1
Some Windows SDKs seem to throw an exception (sometimes?) when calling ConnectionProfile::NetworkAdapter. Catch the exception and ignore it, we would return Unknown anyway. And just in case it is needed, do the same for GetConnectionCost. This requires enabling exceptions for the plugin. Fixes: QTBUG-108156 Change-Id: Ie6c5adb3715578aa94ef3391afae79d9aecdc5d3 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> (cherry picked from commit 35e54f9b7bba9ad7b1757e0b8f7d03859a694b34) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp')
-rw-r--r--src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp b/src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp
index 5af75a89d5..787259fd65 100644
--- a/src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp
+++ b/src/plugins/networkinformation/networklistmanager/qnetworklistmanagerevents.cpp
@@ -186,7 +186,12 @@ QNetworkInformation::TransportMedium getTransportMedium(const ConnectionProfile
if (profile.IsWlanConnectionProfile())
return QNetworkInformation::TransportMedium::WiFi;
- NetworkAdapter adapter = profile.NetworkAdapter();
+ NetworkAdapter adapter(nullptr);
+ try {
+ adapter = profile.NetworkAdapter();
+ } catch (...) {
+ // pass, we will return Unknown anyway
+ }
if (adapter == nullptr)
return QNetworkInformation::TransportMedium::Unknown;
@@ -209,7 +214,14 @@ QNetworkInformation::TransportMedium getTransportMedium(const ConnectionProfile
[[nodiscard]] bool getMetered(const ConnectionProfile &profile)
{
- ConnectionCost cost = profile.GetConnectionCost();
+ ConnectionCost cost(nullptr);
+ try {
+ cost = profile.GetConnectionCost();
+ } catch (...) {
+ // pass, we return false if we get an empty object back anyway
+ }
+ if (cost == nullptr)
+ return false;
NetworkCostType type = cost.NetworkCostType();
return type == NetworkCostType::Fixed || type == NetworkCostType::Variable;
}