From 85b64542ed5920e8c153567d52c4581e6fd5926b Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 25 Aug 2019 05:27:35 +0300 Subject: [PATCH] Previous method of handling missing enum values was not reliable --- ShareX.HelpersLib/SettingsBase.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ShareX.HelpersLib/SettingsBase.cs b/ShareX.HelpersLib/SettingsBase.cs index a6dfe270d..7174635d4 100644 --- a/ShareX.HelpersLib/SettingsBase.cs +++ b/ShareX.HelpersLib/SettingsBase.cs @@ -215,9 +215,10 @@ private static T LoadInternal(string filePath, string backupFolder = null) using (JsonTextReader jsonReader = new JsonTextReader(streamReader)) { JsonSerializer serializer = new JsonSerializer(); - serializer.Converters.Add(new SafeStringEnumConverter()); + serializer.Converters.Add(new StringEnumConverter()); serializer.DateTimeZoneHandling = DateTimeZoneHandling.Local; serializer.ObjectCreationHandling = ObjectCreationHandling.Replace; + serializer.Error += Serializer_Error; settings = serializer.Deserialize(jsonReader); } @@ -250,5 +251,14 @@ private static T LoadInternal(string filePath, string backupFolder = null) return new T(); } + + private static void Serializer_Error(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs e) + { + // Handle missing enum values + if (e.ErrorContext.Error.Message.StartsWith("Error converting value")) + { + e.ErrorContext.Handled = true; + } + } } } \ No newline at end of file