Skip to content

Commit c5eac29

Browse files
committed
Do not delete name if segment bounds are unchanged
1 parent bc18eda commit c5eac29

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

wled00/FX_fcn.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,11 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping,
571571
if (seg.stop) setRange(seg.start, seg.stop -1, 0); //turn old segment range off
572572
if (i2 <= i1) //disable segment
573573
{
574-
seg.stop = 0;
574+
seg.stop = 0;
575+
if (seg.name) {
576+
delete[] seg.name;
577+
seg.name = nullptr;
578+
}
575579
if (n == mainSegment) //if main segment is deleted, set first active as main segment
576580
{
577581
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++)

wled00/json.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
1717

1818
uint16_t start = elem["start"] | seg.start;
1919
int stop = elem["stop"] | -1;
20+
if (stop < 0) {
21+
uint16_t len = elem[F("len")];
22+
stop = (len > 0) ? start + len : seg.stop;
23+
}
2024

2125
if (elem["n"]) {
2226
// name field exists
@@ -35,18 +39,14 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId)
3539
// but is empty (already deleted above)
3640
elem.remove("n");
3741
}
38-
} else if (elem["start"] || elem["stop"]) {
42+
} else if (start != seg.start || stop != seg.stop) {
3943
// clearing or setting segment without name field
4044
if (seg.name) {
4145
delete[] seg.name;
4246
seg.name = nullptr;
4347
}
4448
}
4549

46-
if (stop < 0) {
47-
uint16_t len = elem[F("len")];
48-
stop = (len > 0) ? start + len : seg.stop;
49-
}
5050
uint16_t grp = elem["grp"] | seg.grouping;
5151
uint16_t spc = elem[F("spc")] | seg.spacing;
5252
strip.setSegment(id, start, stop, grp, spc);
@@ -364,7 +364,7 @@ void serializeSegment(JsonObject& root, WS2812FX::Segment& seg, byte id, bool fo
364364
byte segbri = seg.opacity;
365365
root["bri"] = (segbri) ? segbri : 255;
366366

367-
if (seg.name != nullptr) root["n"] = reinterpret_cast<const char *>(seg.name); //not good practice, but decreases required JSON buffer
367+
if (segmentBounds && seg.name != nullptr) root["n"] = reinterpret_cast<const char *>(seg.name); //not good practice, but decreases required JSON buffer
368368

369369
char colstr[70]; colstr[0] = '['; colstr[1] = '\0'; //max len 68 (5 chan, all 255)
370370

0 commit comments

Comments
 (0)