bugfix for broken presets when segment name is very long
another off-by-one
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user