From 66f1a12a623340fe77a5df9ebec625532b2f37c1 Mon Sep 17 00:00:00 2001 From: Anairkoen Schno Date: Sun, 23 Sep 2018 14:03:36 -0500 Subject: [PATCH] Added handling for potention IOExceptions when saving and loading configs --- IPA.Loader/Loader/PluginComponent.cs | 45 ++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/IPA.Loader/Loader/PluginComponent.cs b/IPA.Loader/Loader/PluginComponent.cs index 59e6f138..a6d4a3ee 100644 --- a/IPA.Loader/Loader/PluginComponent.cs +++ b/IPA.Loader/Loader/PluginComponent.cs @@ -44,7 +44,16 @@ namespace IPA.Loader SceneManager.sceneUnloaded += OnSceneUnloaded; foreach (var provider in PluginManager.configProviders) - if (provider.Key.HasChanged) provider.Key.Save(); + if (provider.Key.HasChanged) + try + { + provider.Key.Save(); + } + catch (Exception e) + { + Logging.Logger.log.Error("Error when trying to save config"); + Logging.Logger.log.Error(e); + } } void Update() @@ -60,11 +69,28 @@ namespace IPA.Loader foreach (var provider in PluginManager.configProviders) { - if (provider.Key.HasChanged) provider.Key.Save(); + if (provider.Key.HasChanged) + try + { + provider.Key.Save(); + } + catch (Exception e) + { + Logging.Logger.log.Error("Error when trying to save config"); + Logging.Logger.log.Error(e); + } else if (provider.Key.LastModified > provider.Value.Value) { - provider.Key.Load(); // auto reload if it changes - provider.Value.Value = provider.Key.LastModified; + try + { + provider.Key.Load(); // auto reload if it changes + provider.Value.Value = provider.Key.LastModified; + } + catch (Exception e) + { + Logging.Logger.log.Error("Error when trying to load config"); + Logging.Logger.log.Error(e); + } } } } @@ -93,7 +119,16 @@ namespace IPA.Loader ipaPlugins.OnApplicationQuit(); foreach (var provider in PluginManager.configProviders) - if (provider.Key.HasChanged) provider.Key.Save(); + if (provider.Key.HasChanged) + try + { + provider.Key.Save(); + } + catch (Exception e) + { + Logging.Logger.log.Error("Error when trying to save config"); + Logging.Logger.log.Error(e); + } quitting = true; }