From a4a11ef85970557a94dc0cc0a0fe07b45fd6280c Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Fri, 25 Oct 2019 21:30:14 +1000 Subject: [PATCH] Refactor search paths --- .../BizInvoke/DynamicLibraryImportResolver.cs | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/BizHawk.Common/BizInvoke/DynamicLibraryImportResolver.cs b/BizHawk.Common/BizInvoke/DynamicLibraryImportResolver.cs index b2a701e272..3276e64d46 100644 --- a/BizHawk.Common/BizInvoke/DynamicLibraryImportResolver.cs +++ b/BizHawk.Common/BizInvoke/DynamicLibraryImportResolver.cs @@ -16,10 +16,12 @@ namespace BizHawk.Common.BizInvoke if (_p == IntPtr.Zero) throw new InvalidOperationException($"null pointer returned by {nameof(libLoader.LoadPlatformSpecific)}"); } - private string[] SearchPaths = new[] - { + private string[] RelativeSearchPaths = { "/", - "/dll/", + "/dll/" + }; + + private string[] AbsoluteSearchPaths = { "/usr/lib/", "/usr/lib/bizhawk/" }; @@ -30,8 +32,17 @@ namespace BizHawk.Common.BizInvoke if (dllName.IndexOf('/') != -1) return; // relative paths shouldn't contain '/' var currDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase).Replace("file:", ""); - var dll = dllName; - foreach (var p in SearchPaths) + string dll; + foreach (var p in AbsoluteSearchPaths) + { + dll = p + dllName; + if (File.Exists(dll)) + { + dllName = dll; + return; + } + } + foreach (var p in RelativeSearchPaths) { dll = currDir + p + dllName; if (File.Exists(dll))