Merge pull request #5276 from wled/fix_5275_part1

prevent file data loss due to replacing an open file handle (partial fix for #5275) - provides better protection again presets.json corruption.
This commit is contained in:
Frank
2026-01-05 22:23:21 +01:00
committed by GitHub

View File

@@ -38,7 +38,7 @@ void closeFile() {
DEBUGFS_PRINT(F("Close -> "));
uint32_t s = millis();
#endif
f.close();
f.close(); // "if (f)" check is aleady done inside f.close(), and f cannot be nullptr -> no need for double checking before closing the file handle.
DEBUGFS_PRINTF("took %lu ms\n", millis() - s);
doCloseFile = false;
}
@@ -271,6 +271,8 @@ bool writeObjectToFile(const char* file, const char* key, const JsonDocument* co
s = millis();
#endif
if (doCloseFile) closeFile(); // This prevents the loss of file data that is still cached in the File object.
size_t pos = 0;
char fileName[129]; strncpy_P(fileName, file, 128); fileName[128] = 0; //use PROGMEM safe copy as FS.open() does not
f = WLED_FS.open(fileName, WLED_FS.exists(fileName) ? "r+" : "w+");