From 975a973d316ee47f7ebb47a2a9f5e94806546dcc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 10 Jul 2017 05:08:46 -0400 Subject: [PATCH] Improve error handling when attempting to load very old plugin assemblies --- .../BaseApplicationHost.cs | 16 +++++++++++++--- SharedVersion.cs | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Emby.Common.Implementations/BaseApplicationHost.cs b/Emby.Common.Implementations/BaseApplicationHost.cs index d16afbce3..2f3b0ba4b 100644 --- a/Emby.Common.Implementations/BaseApplicationHost.cs +++ b/Emby.Common.Implementations/BaseApplicationHost.cs @@ -560,12 +560,15 @@ namespace Emby.Common.Implementations { if (assembly == null) { - throw new ArgumentNullException("assembly"); + return new List(); } try { - return assembly.GetTypes(); + // This null checking really shouldn't be needed but adding it due to some + // unhandled exceptions in mono 5.0 that are a little hard to hunt down + var types = assembly.GetTypes() ?? new Type[] { }; + return types.Where(t => t != null); } catch (ReflectionTypeLoadException ex) { @@ -578,7 +581,14 @@ namespace Emby.Common.Implementations } // If it fails we can still get a list of the Types it was able to resolve - return ex.Types.Where(t => t != null); + var types = ex.Types ?? new Type[] { }; + return types.Where(t => t != null); + } + catch (Exception ex) + { + Logger.ErrorException("Error loading types from assembly", ex); + + return new List(); } } diff --git a/SharedVersion.cs b/SharedVersion.cs index 1b7b9e921..c1fcd083e 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.24.0")] +[assembly: AssemblyVersion("3.2.25.0")]