bugfix for broken presets when segment name is very long

another off-by-one
This commit is contained in:
Frank
2024-10-06 21:32:07 +02:00
parent 1b7cae0c59
commit 1656400746
2 changed files with 3 additions and 3 deletions

View File

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

View File

@@ -145,9 +145,9 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId)
const char * name = elem["n"].as<const char*>();
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");