From 226f212ba9e86055bdc071ab3417630ca4afea05 Mon Sep 17 00:00:00 2001 From: Matt Graham Date: Sat, 10 Sep 2016 17:24:21 -0400 Subject: [PATCH] get rid of silent failure --- src/Library/Classes/FreeImageEngine.cs | 18 ++------------- src/Library/FreeImageWrapper.cs | 32 +++++++------------------- 2 files changed, 10 insertions(+), 40 deletions(-) diff --git a/src/Library/Classes/FreeImageEngine.cs b/src/Library/Classes/FreeImageEngine.cs index c0c2ced..072ee70 100644 --- a/src/Library/Classes/FreeImageEngine.cs +++ b/src/Library/Classes/FreeImageEngine.cs @@ -17,11 +17,8 @@ public static class FreeImageEngine static FreeImageEngine() { - // Check if FreeImage.dll is present and cancel setting the callbackfuntion if not - if (!IsAvailable) - { - return; - } + // TODO: try to take this out of the static constructor... + FreeImage.ValidateAvailability(); // Create a delegate (function pointer) to 'OnMessage' outputMessageFunction = new OutputMessageFunction(OnMessage); @@ -47,17 +44,6 @@ private static void OnMessage(FREE_IMAGE_FORMAT fif, string message) } } - /// - /// Gets a value indicating if the FreeImage DLL is available or not. - /// - public static bool IsAvailable - { - get - { - return FreeImage.IsAvailable(); - } - } - /// /// Internal errors in FreeImage generate a logstring that can be /// captured by this event. diff --git a/src/Library/FreeImageWrapper.cs b/src/Library/FreeImageWrapper.cs index 7c80555..c531923 100644 --- a/src/Library/FreeImageWrapper.cs +++ b/src/Library/FreeImageWrapper.cs @@ -200,32 +200,16 @@ public static Version GetNativeVersion() /// Further more must both libraries, including the program itself, /// be the same architecture (x86 or x64). /// - public static bool IsAvailable() + public static void ValidateAvailability() { - try - { - // Call a static fast executing function - Version nativeVersion = new Version(GetVersion()); - Version wrapperVersion = GetWrapperVersion(); - // No exception thrown, the library seems to be present - return - (nativeVersion.Major > wrapperVersion.Major) || - ((nativeVersion.Major == wrapperVersion.Major) && (nativeVersion.Minor > wrapperVersion.Minor)) || - ((nativeVersion.Major == wrapperVersion.Major) && (nativeVersion.Minor == wrapperVersion.Minor) && (nativeVersion.Build >= wrapperVersion.Build)); - } - catch (DllNotFoundException) - { - return false; - } -#if NET462 || NET461 || NET46 || NET452 || NET451 || NET45 || NET40 || NET35 || NET20 - catch (EntryPointNotFoundException) - { - return false; - } -#endif - catch (BadImageFormatException) + Version nativeVersion = new Version(GetVersion()); + Version wrapperVersion = GetWrapperVersion(); + + if (false == ((nativeVersion.Major > wrapperVersion.Major) || + ((nativeVersion.Major == wrapperVersion.Major) && (nativeVersion.Minor > wrapperVersion.Minor)) || + ((nativeVersion.Major == wrapperVersion.Major) && (nativeVersion.Minor == wrapperVersion.Minor) && (nativeVersion.Build >= wrapperVersion.Build)))) { - return false; + throw new InvalidOperationException("Version mismatch"); } }