From 8e49a72f8b238f955175267ed820f95889d236e2 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 cf363c3b..338df359 100644 --- a/src/iec61850/client/ied_connection.c +++ b/src/iec61850/client/ied_connection.c @@ -4013,7 +4013,7 @@ 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 { @@ -4021,12 +4021,12 @@ getDataSetHandlerInternal(uint32_t invokeId, void* parameter, MmsError err, MmsV 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);