From 0f2443a2fae6c6795aba6bc6129341eaa49ba3df Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Thu, 9 May 2024 14:56:05 +0100 Subject: [PATCH] - IED connection: Fixed memory leak and memory handling problem in function IedConnection_readDataSetValuesAsync (LIB61850-439) --- src/iec61850/client/ied_connection.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/iec61850/client/ied_connection.c b/src/iec61850/client/ied_connection.c index 71058942..b394cc56 100644 --- a/src/iec61850/client/ied_connection.c +++ b/src/iec61850/client/ied_connection.c @@ -3714,19 +3714,19 @@ getDataSetHandlerInternal(uint32_t invokeId, void* parameter, MmsError err, MmsV { if (dataSet == NULL) { dataSet = ClientDataSet_create(dataSetReference); - ClientDataSet_setDataSetValues(dataSet, value); + ClientDataSet_setDataSetValues(dataSet, MmsValue_clone(value)); } else { MmsValue* dataSetValues = ClientDataSet_getValues(dataSet); MmsValue_update(dataSetValues, value); } - if (dataSetReference) - GLOBAL_FREEMEM(dataSetReference); - MmsValue_delete(value); } + if (dataSetReference) + GLOBAL_FREEMEM(dataSetReference); + handler(invokeId, call->callbackParameter, iedConnection_mapMmsErrorToIedError(err), dataSet); iedConnection_releaseOutstandingCall(self, call);