Fix for incorrect memory de-allocation.

This commit is contained in:
Blaz Kristan 2021-09-12 12:33:23 +02:00
parent d4beb2f79b
commit 95518f1948
2 changed files with 21 additions and 22 deletions

View File

@ -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")];

View File

@ -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