From a6643b2c33a11fefbd784a4096fa7728e38fdc07 Mon Sep 17 00:00:00 2001 From: Konstantin Vukolov Date: Thu, 22 Jan 2026 19:09:58 +0300 Subject: [PATCH] Fix settings serialization --- src/CrossPointSettings.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/CrossPointSettings.cpp b/src/CrossPointSettings.cpp index c58eb572..65e3c44f 100644 --- a/src/CrossPointSettings.cpp +++ b/src/CrossPointSettings.cpp @@ -14,7 +14,7 @@ CrossPointSettings CrossPointSettings::instance; namespace { constexpr uint8_t SETTINGS_FILE_VERSION = 1; // Increment this when adding new persisted settings fields -constexpr uint8_t SETTINGS_COUNT = 20; +constexpr uint8_t SETTINGS_COUNT = 21; constexpr char SETTINGS_FILE[] = "/.crosspoint/settings.bin"; } // namespace @@ -45,11 +45,11 @@ bool CrossPointSettings::saveToFile() const { serialization::writePod(outputFile, screenMargin); serialization::writePod(outputFile, sleepScreenCoverMode); serialization::writeString(outputFile, std::string(opdsServerUrl)); - serialization::writeString(outputFile, std::string(opdsPath)); serialization::writePod(outputFile, textAntiAliasing); serialization::writePod(outputFile, hideBatteryPercentage); serialization::writePod(outputFile, longPressChapterSkip); serialization::writePod(outputFile, hyphenationEnabled); + serialization::writeString(outputFile, std::string(opdsPath)); outputFile.close(); Serial.printf("[%lu] [CPS] Settings saved to file\n", millis()); @@ -113,13 +113,6 @@ bool CrossPointSettings::loadFromFile() { opdsServerUrl[sizeof(opdsServerUrl) - 1] = '\0'; } if (++settingsRead >= fileSettingsCount) break; - { - std::string urlPath; - serialization::readString(inputFile, urlPath); - strncpy(opdsPath, urlPath.c_str(), sizeof(opdsPath) - 1); - opdsPath[sizeof(opdsPath) - 1] = '\0'; - } - if (++settingsRead >= fileSettingsCount) break; serialization::readPod(inputFile, textAntiAliasing); if (++settingsRead >= fileSettingsCount) break; serialization::readPod(inputFile, hideBatteryPercentage); @@ -128,6 +121,13 @@ bool CrossPointSettings::loadFromFile() { if (++settingsRead >= fileSettingsCount) break; serialization::readPod(inputFile, hyphenationEnabled); if (++settingsRead >= fileSettingsCount) break; + if (++settingsRead >= fileSettingsCount) break; + { + std::string urlPath; + serialization::readString(inputFile, urlPath); + strncpy(opdsPath, urlPath.c_str(), sizeof(opdsPath) - 1); + opdsPath[sizeof(opdsPath) - 1] = '\0'; + } } while (false); inputFile.close();