From 687b2a9ac9f4e1018693988638761096b1330905 Mon Sep 17 00:00:00 2001 From: Adeel Mujahid <3840695+am11@users.noreply.github.com> Date: Tue, 26 Jan 2021 15:18:12 +0200 Subject: [PATCH] Search libgdiplus in macports install location (#47373) When `libgdiplus` is installed via macports, `System.TypeInitializationException` exception is thrown. This is because macports installs the library in `/opt/local/lib`. ```sh $ port install libgdiplus $ port contents libgdiplus Port libgdiplus contains: /opt/local/lib/libgdiplus.0.dylib /opt/local/lib/libgdiplus.a /opt/local/lib/libgdiplus.dylib /opt/local/lib/pkgconfig/libgdiplus.pc /opt/local/share/doc/libgdiplus/AUTHORS /opt/local/share/doc/libgdiplus/COPYING /opt/local/share/doc/libgdiplus/ChangeLog /opt/local/share/doc/libgdiplus/LICENSE /opt/local/share/doc/libgdiplus/NEWS /opt/local/share/doc/libgdiplus/README.md /opt/local/share/doc/libgdiplus/TODO ``` PR adds `/opt/local/lib/libgdiplus.dylib` as a well-known probing path. --- .../src/System/Drawing/GdiplusNative.Unix.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs index 799ebd0f5c197..1d30015640544 100644 --- a/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs +++ b/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs @@ -35,7 +35,12 @@ internal static IntPtr LoadNativeLibrary() { if (!NativeLibrary.TryLoad("libgdiplus.dylib", assembly, default, out lib)) { - NativeLibrary.TryLoad("/usr/local/lib/libgdiplus.dylib", assembly, default, out lib); + // homebrew install location + if (!NativeLibrary.TryLoad("/usr/local/lib/libgdiplus.dylib", assembly, default, out lib)) + { + // macports install location + NativeLibrary.TryLoad("/opt/local/lib/libgdiplus.dylib", assembly, default, out lib); + } } } else