Fix robustness issue: empty JSON {} in cfg.json or wsec.json (#355)
* Treat empty or effectively-empty configuration files as invalid: restore defaults, optionally fall back to stored settings, and avoid silently using blank configurations. * Improve presets handling by detecting and recreating empty or undersized preset files so presets are reliably initialized and usable. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: softhack007 <91616163+softhack007@users.noreply.github.com>
This commit is contained in:
@@ -123,7 +123,15 @@ bool getPresetName(byte index, String& name)
|
||||
|
||||
void initPresetsFile()
|
||||
{
|
||||
if (WLED_FS.exists(getFileName())) return;
|
||||
if (WLED_FS.exists(getFileName())) {
|
||||
// treat an empty JSON file (e.g. "{}", "{ }") the same as a missing file:
|
||||
// f.size() < 4 is the same threshold used in appendObjectToFile() to detect an uninitialized file
|
||||
File f = WLED_FS.open(getFileName(), "r");
|
||||
bool empty = f && f.size() < 4; // file does exist due to previous "if"
|
||||
if (f) f.close();
|
||||
if (empty) WLED_FS.remove(getFileName()); // remove the empty file so it can be recreated below
|
||||
else return; // file not empty -> keep (nothing to init)
|
||||
}
|
||||
|
||||
StaticJsonDocument<64> doc;
|
||||
JsonObject sObj = doc.to<JsonObject>();
|
||||
|
||||
Reference in New Issue
Block a user