diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 40d457d4..45519c69 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -53,11 +53,15 @@ namespace big { from_json(m_options, *this); } - catch (const nlohmann::detail::type_error& e) + catch (const std::exception& e) { - LOG(WARNING) << e.what(); + file.close(); - return false; + LOG(WARNING) << "Detected incompatible settings, writing default config: " << e.what(); + + write_default_config(); + + return load(); } if (should_save) @@ -101,6 +105,12 @@ namespace big { current_settings[key] = e.value(); + should_save = true; + } + else if (current_settings[key].size() < e.value().size()) + { + current_settings[key] = e.value(); + should_save = true; } }