From 7f0e5cb092574355f356777a3f2997c54e02139b Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Wed, 8 Nov 2017 13:52:30 +0100 Subject: winrt: Early return instead of assert is case of error Some devices report access denied for various reasons (group policy, disabled, etc.). Hence, do return and stop the discovery instead of asserting. Change-Id: I22fe9cc375fd3b3580deaf72c614bf62600cbf32 Reviewed-by: Oliver Wolff --- src/bluetooth/qlowenergycontroller_winrt.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/bluetooth/qlowenergycontroller_winrt.cpp b/src/bluetooth/qlowenergycontroller_winrt.cpp index 8517a942..ed36790b 100644 --- a/src/bluetooth/qlowenergycontroller_winrt.cpp +++ b/src/bluetooth/qlowenergycontroller_winrt.cpp @@ -489,7 +489,9 @@ void QLowEnergyControllerPrivate::obtainIncludedServices(QSharedPointer> includedServices; hr = service2->GetAllIncludedServices(&includedServices); - Q_ASSERT_SUCCEEDED(hr); + // Some devices return ERROR_ACCESS_DISABLED_BY_POLICY + if (FAILED(hr)) + return; uint count; hr = includedServices->get_Size(&count); @@ -588,7 +590,12 @@ void QLowEnergyControllerPrivate::discoverServiceDetails(const QBluetoothUuid &s Q_ASSERT_SUCCEEDED(hr); ComPtr> deviceServices; hr = deviceService2->GetAllIncludedServices(&deviceServices); - Q_ASSERT_SUCCEEDED(hr); + if (FAILED(hr)) { // ERROR_ACCESS_DISABLED_BY_POLICY + qCDebug(QT_BT_WINRT) << "Could not obtain included services list for" << service; + pointer->setError(QLowEnergyService::UnknownError); + pointer->setState(QLowEnergyService::InvalidService); + return; + } uint serviceCount; hr = deviceServices->get_Size(&serviceCount); Q_ASSERT_SUCCEEDED(hr); -- cgit v1.2.3