From 16564007466d33411cf656af40f7b55c7b480c23 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Sun, 6 Oct 2024 21:32:07 +0200 Subject: [PATCH] bugfix for broken presets when segment name is very long another off-by-one --- wled00/FX_fcn.cpp | 2 +- wled00/json.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index f2ed3e20..d6c80731 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -1747,7 +1747,7 @@ void WS2812FX::enumerateLedmaps() { //WLEDMM add segment names to be used as ledmap names uint8_t segment_index = 0; for (segment &seg : _segments) { - if (seg.name != nullptr && strcmp(seg.name, "") != 0) { + if (seg.name != nullptr && strlen(seg.name) > 0) { char fileName[33]; snprintf_P(fileName, sizeof(fileName), PSTR("/lm%s.json"), seg.name); bool isFile = WLED_FS.exists(fileName); diff --git a/wled00/json.cpp b/wled00/json.cpp index a2b9514b..ac4d1ca5 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -145,9 +145,9 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId) const char * name = elem["n"].as(); size_t len = 0; if (name != nullptr) len = strlen(name); - if (len > 0 && len < 33) { + if (len > 0 && len < 32) { seg.name = new char[len+1]; - if (seg.name) strlcpy(seg.name, name, 33); + if (seg.name) strlcpy(seg.name, name, len+1); } else { // but is empty (already deleted above) elem.remove("n");