From ad72ffa37cfc71ad596baa25de72838b348a1321 Mon Sep 17 00:00:00 2001 From: Slider0007 <115730895+Slider0007@users.noreply.github.com> Date: Sun, 30 Jul 2023 18:25:35 +0200 Subject: [PATCH] mqtt_handler_set_prevalue: fix memory leak (#2544) --- code/components/jomjol_mqtt/interface_mqtt.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/components/jomjol_mqtt/interface_mqtt.cpp b/code/components/jomjol_mqtt/interface_mqtt.cpp index aa21fe7d..adddba02 100644 --- a/code/components/jomjol_mqtt/interface_mqtt.cpp +++ b/code/components/jomjol_mqtt/interface_mqtt.cpp @@ -371,8 +371,10 @@ bool mqtt_handler_set_prevalue(std::string _topic, char* _data, int _data_len) if (cJSON_IsNumber(value)) { // Check if value is a number LogFile.WriteToFile(ESP_LOG_DEBUG, TAG, "handler_set_prevalue called: numbersname: " + std::string(numbersname->valuestring) + ", value: " + std::to_string(value->valuedouble)); - if (flowctrl.UpdatePrevalue(std::to_string(value->valuedouble), std::string(numbersname->valuestring), true)) + if (flowctrl.UpdatePrevalue(std::to_string(value->valuedouble), std::string(numbersname->valuestring), true)) { + cJSON_Delete(jsonData); return ESP_OK; + } } else { LogFile.WriteToFile(ESP_LOG_WARN, TAG, "handler_set_prevalue: value not a valid number (\"value\": 12345.12345)"); @@ -381,6 +383,7 @@ bool mqtt_handler_set_prevalue(std::string _topic, char* _data, int _data_len) else { LogFile.WriteToFile(ESP_LOG_WARN, TAG, "handler_set_prevalue: numbersname not a valid string (\"numbersname\": \"main\")"); } + cJSON_Delete(jsonData); } else { LogFile.WriteToFile(ESP_LOG_WARN, TAG, "handler_set_prevalue: handler called, but no data received");