settings: handle corrupted json settings files (#2600)

Fixes #2597
This commit is contained in:
Tyler Wilding
2023-04-30 13:14:40 -05:00
committed by GitHub
parent 5c9aa3facd
commit cc878c1055
+27 -12
View File
@@ -251,23 +251,38 @@ void LoadSettings() {
// TODO - make this game specific as well
auto controller_settings_filename =
file_util::get_user_config_dir() / "controller" / "controller-settings.json";
if (fs::exists(controller_settings_filename)) {
LoadPeripheralSettings(controller_settings_filename);
lg::info("Loaded controller configuration file.");
} else {
SavePeripheralSettings();
try {
if (fs::exists(controller_settings_filename)) {
LoadPeripheralSettings(controller_settings_filename);
lg::info("Loaded controller configuration file.");
} else {
lg::info(
"Couldn't find $USER/controller/controller-settings.json creating new controller "
"settings "
"file.");
SavePeripheralSettings();
}
} catch (std::exception& e) {
lg::info(
"Couldn't find $USER/controller/controller-settings.json creating new controller settings "
"file.");
"Unable to load $USER/controller/controller-settings.json successfully, re-initializing "
"it");
SavePeripheralSettings();
}
// load debug settings
auto debug_settings_filename =
file_util::get_user_misc_dir(g_game_version) / "debug-settings.json";
if (fs::exists(debug_settings_filename)) {
g_debug_settings.load_settings(debug_settings_filename);
lg::info("Loaded debug settings file.");
} else {
lg::info("Couldn't find $USER/misc/debug-settings.json creating new controller settings file.");
try {
if (fs::exists(debug_settings_filename)) {
g_debug_settings.load_settings(debug_settings_filename);
lg::info("Loaded debug settings file.");
} else {
lg::info(
"Couldn't find $USER/misc/debug-settings.json creating new controller settings file.");
g_debug_settings.save_settings();
}
} catch (std::exception& e) {
lg::info("Unable to load $USER/misc/debug-settings.json successfully, re-initializing it");
g_debug_settings.save_settings();
}
}