From 95518f1948bf88669f3817771f8bccd68bd84f5e Mon Sep 17 00:00:00 2001 From: Blaz Kristan Date: Sun, 12 Sep 2021 12:33:23 +0200 Subject: [PATCH] Fix for incorrect memory de-allocation. --- wled00/json.cpp | 41 ++++++++++++++++++++--------------------- wled00/wled.h | 2 +- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index e6ce3a7e7..8c2c984e7 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -18,28 +18,27 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId) uint16_t start = elem[F("start")] | seg.start; int stop = elem["stop"] | -1; - if (elem["n"]) { - // name field exists - String name = elem["n"]; - if (name.length()) { - if (seg.name) delete seg.name; - seg.name = new char[name.length()+1]; - strcpy(seg.name, name.c_str()); - } else { - // but is empty - elem.remove("n"); - if (seg.name) { - delete seg.name; - seg.name = nullptr; - } - } - } else if (elem[F("start")] || elem["stop"]) { - // clearing or setting segment without name field - if (seg.name) { - delete seg.name; - seg.name = nullptr; - } + if (elem["n"]) { + // name field exists + if (seg.name) { + delete[] seg.name; + seg.name = nullptr; } + String name = elem["n"]; + if (name.length()) { + seg.name = new char[name.length()+1]; + if (seg.name != nullptr) strcpy(seg.name, name.c_str()); + } else { + // but is empty + elem.remove("n"); + } + } else if (elem[F("start")] || elem["stop"]) { + // clearing or setting segment without name field + if (seg.name) { + delete[] seg.name; + seg.name = nullptr; + } + } if (stop < 0) { uint16_t len = elem[F("len")]; diff --git a/wled00/wled.h b/wled00/wled.h index 3e5fd4c78..743f57b15 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2109112 +#define VERSION 2109121 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG