- fixed - Memory leak in RCB handling code when data set is updated (LIB61850-412)

v1.6_develop_417_rbac2
Michael Zillgith 2 years ago
parent 9404622c5a
commit 7c80c95629

@ -717,6 +717,8 @@ updateReportDataset(MmsMapping* mapping, ReportControl* rc, MmsValue* newDatSet,
MmsValue* dataSetValue;
bool isUsedDataSetDynamic = rc->isDynamicDataSet;
if (newDatSet != NULL) {
if (strcmp(MmsValue_toString(newDatSet), "") == 0) {
success = true;
@ -788,15 +790,6 @@ updateReportDataset(MmsMapping* mapping, ReportControl* rc, MmsValue* newDatSet,
}
}
if (rc->isDynamicDataSet) {
if (rc->dataSet && dataSetChanged) {
deleteDataSetValuesShadowBuffer(rc);
MmsMapping_freeDynamicallyCreatedDataSet(rc->dataSet);
rc->isDynamicDataSet = false;
rc->dataSet = NULL;
}
}
if (dataSetValue) {
const char* dataSetName = MmsValue_toString(dataSetValue);
@ -877,11 +870,20 @@ updateReportDataset(MmsMapping* mapping, ReportControl* rc, MmsValue* newDatSet,
#endif /* (MMS_DYNAMIC_DATA_SETS == 1) */
if (rc->dataSet && rc->dataSet != dataSet)
dataSetChanged = true;
if (dataSetChanged) {
/* delete pending event and create buffer for new data set */
deleteDataSetValuesShadowBuffer(rc);
if (isUsedDataSetDynamic) {
if (rc->dataSet) {
MmsMapping_freeDynamicallyCreatedDataSet(rc->dataSet);
}
}
rc->dataSet = dataSet;
createDataSetValuesShadowBuffer(rc);

Loading…
Cancel
Save