arti-fx error handling improvements
- if log file cannot be created, switch to serial logging - fixing a broken format string - usermod_arti: avoid to copy more than what fits into the buffer
This commit is contained in:
@@ -2452,7 +2452,8 @@ public:
|
|||||||
|
|
||||||
// softhack007 check that programName has max 43 chars: fileNameLength -7 ("/" +Name + ".wled\0")
|
// softhack007 check that programName has max 43 chars: fileNameLength -7 ("/" +Name + ".wled\0")
|
||||||
if ((programName == NULL) || (strlen(programName) < 1) || (strlen(programName) > (fileNameLength-7))) {
|
if ((programName == NULL) || (strlen(programName) < 1) || (strlen(programName) > (fileNameLength-7))) {
|
||||||
ERROR_ARTI("Program name '%s' is invalid. Program Name must be less than %d chars.\n", programName, fileNameLength-7);
|
if (!logFile) logToFile = false; // make sure this message gets to the user
|
||||||
|
ERROR_ARTI("ARTI-FX: Invalid program name '%s'. Name must be less than %u chars.\n", programName, (unsigned)fileNameLength-7);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2468,6 +2469,11 @@ public:
|
|||||||
|
|
||||||
#if ARTI_PLATFORM == ARTI_ARDUINO
|
#if ARTI_PLATFORM == ARTI_ARDUINO
|
||||||
logFile = WLED_FS.open(logFileName,"w");
|
logFile = WLED_FS.open(logFileName,"w");
|
||||||
|
if (!logFile) {
|
||||||
|
logToFile = false;
|
||||||
|
ERROR_ARTI("ARTI-FX: Failed to create logfile '%s'\n", logFileName);
|
||||||
|
//ERROR_ARTI("ARTI-FX: Failed to create logfile '%s': %s\n", logFileName, strerror(errno)); // unfortunately, errno is not supported on older platforms
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
logFile = fopen (logFileName,"w");
|
logFile = fopen (logFileName,"w");
|
||||||
#endif
|
#endif
|
||||||
@@ -2549,7 +2555,8 @@ public:
|
|||||||
MEMORY_ARTI("open %s %u ✓\n", programFileName, FREE_SIZE);
|
MEMORY_ARTI("open %s %u ✓\n", programFileName, FREE_SIZE);
|
||||||
if (!programFile)
|
if (!programFile)
|
||||||
{
|
{
|
||||||
ERROR_ARTI("Program file %s not found\n", programFileName);
|
ERROR_ARTI("Program file '%s' not found\n", programFileName);
|
||||||
|
//ERROR_ARTI("Program file '%s' not found: %s\n", programFileName, strerror(errno)); // errno is not supported on older platforms
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2740,7 +2747,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (parseTreeJsonDoc != nullptr) {
|
if (parseTreeJsonDoc != nullptr) {
|
||||||
MEMORY_ARTI("parseTree %u / %0u%% (%u %u %u)\n", (unsigned int)parseTreeJsonDoc->memoryUsage(), 100 * parseTreeJsonDoc->memoryUsage() / parseTreeJsonDoc->capacity(), (unsigned int)parseTreeJsonDoc->size(), parseTreeJsonDoc->overflowed(), (unsigned int)parseTreeJsonDoc->nesting());
|
MEMORY_ARTI("parseTree %u / %u%% (%u %u %u)\n", (unsigned int)parseTreeJsonDoc->memoryUsage(), 100 * parseTreeJsonDoc->memoryUsage() / parseTreeJsonDoc->capacity(), (unsigned int)parseTreeJsonDoc->size(), parseTreeJsonDoc->overflowed(), (unsigned int)parseTreeJsonDoc->nesting());
|
||||||
delete parseTreeJsonDoc; parseTreeJsonDoc = nullptr;
|
delete parseTreeJsonDoc; parseTreeJsonDoc = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ uint16_t mode_ARTIFX(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char currentEffect[charLength];
|
char currentEffect[charLength];
|
||||||
strcpy(currentEffect, (SEGMENT.name != nullptr)?SEGMENT.name:"default"); //note: switching preset with segment name to preset without does not clear the SEGMENT.name variable, but not gonna solve here ;-)
|
strncpy(currentEffect, (SEGMENT.name != nullptr)?SEGMENT.name:"default", sizeof(currentEffect)-1); //note: switching preset with segment name to preset without does not clear the SEGMENT.name variable, but not gonna solve here ;-)
|
||||||
|
|
||||||
if (strcmp(previousEffect, currentEffect) != 0)
|
if (strcmp(previousEffect, currentEffect) != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user