diff --git a/src/SharpEmu.Libs/Kernel/KernelMemoryCompatExports.cs b/src/SharpEmu.Libs/Kernel/KernelMemoryCompatExports.cs index c7a86301..3cc0a200 100644 --- a/src/SharpEmu.Libs/Kernel/KernelMemoryCompatExports.cs +++ b/src/SharpEmu.Libs/Kernel/KernelMemoryCompatExports.cs @@ -4037,7 +4037,7 @@ public static partial class KernelMemoryCompatExports _ => unchecked((int)argumentSource.NextGpArg()) }; - var formatted = value.ToString(); + var formatted = value.ToString(CultureInfo.InvariantCulture); if (showSign && value >= 0) formatted = "+" + formatted; else if (spaceForSign && value >= 0) @@ -4057,7 +4057,7 @@ public static partial class KernelMemoryCompatExports _ => (uint)argumentSource.NextGpArg() }; - var formatted = value.ToString(); + var formatted = value.ToString(CultureInfo.InvariantCulture); sb.Append(PadString(formatted, width, leftAlign, padWithZero && !leftAlign)); } break; @@ -4074,8 +4074,8 @@ public static partial class KernelMemoryCompatExports }; var formatted = specifier == 'x' - ? value.ToString("x") - : value.ToString("X"); + ? value.ToString("x", CultureInfo.InvariantCulture) + : value.ToString("X", CultureInfo.InvariantCulture); if (alternateForm && value != 0) formatted = specifier == 'x' ? "0x" + formatted : "0X" + formatted; @@ -4179,7 +4179,10 @@ public static partial class KernelMemoryCompatExports var formatStr = precision >= 0 ? $"{{0:{specifier}{precision}}}" : $"{{0:{specifier}}}"; - var formatted = string.Format(formatStr, value); + var formatted = string.Format( + CultureInfo.InvariantCulture, + formatStr, + value); if (showSign && value >= 0) formatted = "+" + formatted; diff --git a/tests/SharpEmu.Libs.Tests/Kernel/KernelMemoryCompatExportsTests.cs b/tests/SharpEmu.Libs.Tests/Kernel/KernelMemoryCompatExportsTests.cs index 3d0ac43f..5e342083 100644 --- a/tests/SharpEmu.Libs.Tests/Kernel/KernelMemoryCompatExportsTests.cs +++ b/tests/SharpEmu.Libs.Tests/Kernel/KernelMemoryCompatExportsTests.cs @@ -3,6 +3,7 @@ using SharpEmu.HLE; using SharpEmu.Libs.Kernel; +using System.Globalization; using System.Text; using Xunit; @@ -44,12 +45,22 @@ public sealed class KernelMemoryCompatExportsTests unchecked((ulong)BitConverter.DoubleToInt64Bits(0.5576)), 0); - var result = KernelMemoryCompatExports.Sprintf(context); + var previousCulture = CultureInfo.CurrentCulture; + try + { + CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("es-ES"); - Assert.Equal(0, result); - Assert.Equal(6UL, context[CpuRegister.Rax]); - Span output = stackalloc byte[7]; - Assert.True(memory.TryRead(destinationAddress, output)); - Assert.Equal("0.5576\0", Encoding.UTF8.GetString(output)); + var result = KernelMemoryCompatExports.Sprintf(context); + + Assert.Equal(0, result); + Assert.Equal(6UL, context[CpuRegister.Rax]); + Span output = stackalloc byte[7]; + Assert.True(memory.TryRead(destinationAddress, output)); + Assert.Equal("0.5576\0", Encoding.UTF8.GetString(output)); + } + finally + { + CultureInfo.CurrentCulture = previousCulture; + } } }