Skip to content

Commit 0bdbd2c

Browse files
committed
[Bugfix] Use the correct taskData when retrieving descriptors
1 parent 6b69cb1 commit 0bdbd2c

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

src/NimBLERemoteCharacteristic.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
# include <climits>
2828

2929
struct NimBLEDescriptorFilter {
30-
NimBLERemoteDescriptor* dsc;
3130
const NimBLEUUID* uuid;
32-
void* taskData;
31+
NimBLERemoteDescriptor* dsc{nullptr};
32+
void* taskData{nullptr};
3333
};
3434

3535
static const char* LOG_TAG = "NimBLERemoteCharacteristic";
@@ -120,6 +120,8 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* pFi
120120
NimBLEDescriptorFilter defaultFilter{nullptr, nullptr, &taskData};
121121
if (pFilter == nullptr) {
122122
pFilter = &defaultFilter;
123+
} else {
124+
pFilter->taskData = &taskData;
123125
}
124126

125127
int rc = ble_gattc_disc_all_dscs(getClient()->getConnHandle(),
@@ -134,7 +136,7 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* pFi
134136

135137
auto prevDscCount = m_vDescriptors.size();
136138
NimBLEUtils::taskWait(taskData, BLE_NPL_TIME_FOREVER);
137-
rc = ((NimBLEUtils::TaskData*)pFilter->taskData)->m_flags;
139+
rc = taskData.m_flags;
138140
if (rc != BLE_HS_EDONE) {
139141
NIMBLE_LOGE(LOG_TAG, "<< retrieveDescriptors(): failed: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc));
140142
return false;
@@ -156,8 +158,7 @@ bool NimBLERemoteCharacteristic::retrieveDescriptors(NimBLEDescriptorFilter* pFi
156158
NimBLERemoteDescriptor* NimBLERemoteCharacteristic::getDescriptor(const NimBLEUUID& uuid) const {
157159
NIMBLE_LOGD(LOG_TAG, ">> getDescriptor: uuid: %s", uuid.toString().c_str());
158160
NimBLEUUID uuidTmp{uuid};
159-
NimBLEUtils::TaskData taskData(const_cast<NimBLERemoteCharacteristic*>(this));
160-
NimBLEDescriptorFilter filter{nullptr, &uuidTmp, &taskData};
161+
NimBLEDescriptorFilter filter{&uuidTmp};
161162

162163
for (const auto& dsc : m_vDescriptors) {
163164
if (dsc->getUUID() == uuid) {

0 commit comments

Comments
 (0)