1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Fixed race in Environment.OperatingSystem and CultureInfo.NumberFormat

This commit is contained in:
Brian Fiete 2024-10-19 05:00:06 -04:00
parent ff2affb733
commit 691c147089
2 changed files with 18 additions and 8 deletions

View file

@ -18,16 +18,18 @@ namespace System
public static OperatingSystem OSVersion public static OperatingSystem OSVersion
{ {
get get
{
if (sOSVersion == null)
{ {
var osVersion = new OperatingSystem(); var osVersion = new OperatingSystem();
let prevValue = Interlocked.CompareExchange(ref sOSVersion, null, osVersion); if (let prevValue = Interlocked.CompareExchange(ref sOSVersion, null, osVersion))
if (prevValue != null)
{ {
// This was already set - race condition // This was already set - race condition
delete osVersion; delete osVersion;
return prevValue; return prevValue;
} }
return osVersion; }
return sOSVersion;
} }
} }

View file

@ -74,7 +74,15 @@ namespace System.Globalization
get get
{ {
if (mNumInfo == null) if (mNumInfo == null)
mNumInfo = new NumberFormatInfo(mCultureData); {
var numInfo = new NumberFormatInfo(mCultureData);
if (var prevValue = Interlocked.CompareExchange(ref mNumInfo, null, numInfo))
{
// This was already set - race condition
delete numInfo;
return prevValue;
}
}
return mNumInfo; return mNumInfo;
} }
} }