diff options
author | Oliver Wolff <oliver.wolff@qt.io> | 2019-03-29 13:54:17 +0100 |
---|---|---|
committer | Oliver Wolff <oliver.wolff@qt.io> | 2019-04-10 07:59:38 +0000 |
commit | da71597d2c440528de2c84606d553d0ef7e922ae (patch) | |
tree | f507233c5a7df371ac1d091b88affa36d7496939 /src | |
parent | 86b4ccddf476f0c18fe04542c52e29b728dbe679 (diff) |
winrt: Do not assert/crash in registerforValueChanges/unregisterFromValueChanges
Change-Id: I6ea4ae73b53cd705156e15ce8820467bddedcf6f
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/bluetooth/qlowenergycontroller_winrt_new.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/bluetooth/qlowenergycontroller_winrt_new.cpp b/src/bluetooth/qlowenergycontroller_winrt_new.cpp index 6e40e77c..de86be06 100644 --- a/src/bluetooth/qlowenergycontroller_winrt_new.cpp +++ b/src/bluetooth/qlowenergycontroller_winrt_new.cpp @@ -664,6 +664,12 @@ void QLowEnergyControllerPrivateWinRTNew::registerForValueChanges(const QBluetoo return; } ComPtr<IGattCharacteristic> characteristic = getNativeCharacteristic(serviceUuid, charUuid); + if (!characteristic) { + qCDebug(QT_BT_WINRT).nospace() << "Could not obtain native characteristic " << charUuid + << " from service " << serviceUuid << ". Qt will not be able to signal" + << " changes for this characteristic."; + return; + } EventRegistrationToken token; HRESULT hr; @@ -691,8 +697,14 @@ void QLowEnergyControllerPrivateWinRTNew::unregisterFromValueChanges() qCDebug(QT_BT_WINRT) << "Unregistering " << mValueChangedTokens.count() << " value change tokens"; HRESULT hr; for (const ValueChangedEntry &entry : qAsConst(mValueChangedTokens)) { + if (!entry.characteristic) { + qCWarning(QT_BT_WINRT) << "Unregistering from value changes for characteristic failed." + << "Characteristic has been deleted"; + continue; + } hr = entry.characteristic->remove_ValueChanged(entry.token); - Q_ASSERT_SUCCEEDED(hr); + if (FAILED(hr)) + qCWarning(QT_BT_WINRT) << "Unregistering from value changes for characteristic failed."; } mValueChangedTokens.clear(); } |