- IED connection: Fixed memory leak and memory handling problem in function IedConnection_readDataSetValuesAsync (LIB61850-439)

v1.5
Michael Zillgith 1 year ago
parent 7afa40390b
commit 0f2443a2fa

@ -3714,19 +3714,19 @@ getDataSetHandlerInternal(uint32_t invokeId, void* parameter, MmsError err, MmsV
{ {
if (dataSet == NULL) { if (dataSet == NULL) {
dataSet = ClientDataSet_create(dataSetReference); dataSet = ClientDataSet_create(dataSetReference);
ClientDataSet_setDataSetValues(dataSet, value); ClientDataSet_setDataSetValues(dataSet, MmsValue_clone(value));
} }
else { else {
MmsValue* dataSetValues = ClientDataSet_getValues(dataSet); MmsValue* dataSetValues = ClientDataSet_getValues(dataSet);
MmsValue_update(dataSetValues, value); MmsValue_update(dataSetValues, value);
} }
if (dataSetReference)
GLOBAL_FREEMEM(dataSetReference);
MmsValue_delete(value); MmsValue_delete(value);
} }
if (dataSetReference)
GLOBAL_FREEMEM(dataSetReference);
handler(invokeId, call->callbackParameter, iedConnection_mapMmsErrorToIedError(err), dataSet); handler(invokeId, call->callbackParameter, iedConnection_mapMmsErrorToIedError(err), dataSet);
iedConnection_releaseOutstandingCall(self, call); iedConnection_releaseOutstandingCall(self, call);

Loading…
Cancel
Save