From 6646aae79965dccc4ae0a31903f0351bcd6210ec Mon Sep 17 00:00:00 2001 From: Gregg Date: Sat, 1 Aug 2020 11:29:15 -0500 Subject: [PATCH] Fixed bug in updateCharacteristics Fixed bug that was causing a crash when trying to update to separate services at the same time. --- src/HomeSpan.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index b3debac..0a8e4f6 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -569,24 +569,24 @@ int Span::updateCharacteristics(char *buf, SpanPut *pObj){ if(pObj[i].characteristic) // if found, initialize characterstic update with new val/ev pObj[i].status=pObj[i].characteristic->loadUpdate(pObj[i].val,pObj[i].ev); // save status code, which is either an error, or TBD (in which case isUpdated for the characteristic has been set to true) else - pObj[i].status=StatusCode::UnknownResource; // if not found, set HAP error + pObj[i].status=StatusCode::UnknownResource; // if not found, set HAP error } // first pass for(int i=0;iservice; // set service containing the characteristic underlying the object - StatusCode status=svc->update(); // update service and save returned statusCode + StatusCode status=pObj[i].characteristic->service->update(); // update service and save returned statusCode - for(int j=i;jservice==svc){ // if service matches - pObj[j].status=status; // save statusCode for this object + for(int j=i;jservice==pObj[i].characteristic->service){ // if service of this characteristic matches service that was updated + pObj[j].status=status; // save statusCode for this object LOG1("Updating aid="); - LOG1(svc->Characteristics[j]->aid); + LOG1(pObj[j].characteristic->aid); LOG1(" iid="); - LOG1(svc->Characteristics[j]->iid); - if(status==StatusCode::OK){ // if status is okay + LOG1(pObj[j].characteristic->iid); + if(status==StatusCode::OK){ // if status is okay pObj[j].characteristic->value =pObj[j].characteristic->newValue; // update characteristic value with new value LOG1(" (okay)\n");