mirror of
https://github.com/BepInEx/BepInEx.git
synced 2026-10-19 15:51:45 +00:00
Avoid accidentally (indirectly) reading PlatformHelper.Current before setting it (#1254)
This commit is contained in:
1 parent
dd0655fe9d
commit
0d275a4df3
1 file changed
+6
-1
@@ -80,7 +80,12 @@ internal static class PlatformUtils
|
||||
if (wineGetVersion != IntPtr.Zero)
|
||||
{
|
||||
current |= Platform.Wine;
|
||||
var getVersion = wineGetVersion.AsDelegate<GetWineVersionDelegate>();
|
||||
// It's not safe to use the AsDelegate() extension method here because:
|
||||
// - It comes from the MonoMod.Utils.DynDll class, defined in MonoMod.Common.
|
||||
// - The DynDll class has a static constructor that reads PlatformHelper.Current.
|
||||
// - Reading from that property freezes it: subsequent writes will throw an exception.
|
||||
// - This method only sets PlatformHelper.Current at the very end.
|
||||
var getVersion = Marshal.GetDelegateForFunctionPointer(wineGetVersion, typeof(GetWineVersionDelegate)) as GetWineVersionDelegate;
|
||||
WineVersion = getVersion();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user