diff options
Diffstat (limited to 'src/Ryujinx.Cpu/MemoryHelper.cs')
-rw-r--r-- | src/Ryujinx.Cpu/MemoryHelper.cs | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/Ryujinx.Cpu/MemoryHelper.cs b/src/Ryujinx.Cpu/MemoryHelper.cs index 194a0c35..ee14ee95 100644 --- a/src/Ryujinx.Cpu/MemoryHelper.cs +++ b/src/Ryujinx.Cpu/MemoryHelper.cs @@ -2,7 +2,6 @@ using Ryujinx.Common.Memory; using Ryujinx.Memory; using System; -using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; @@ -26,12 +25,12 @@ namespace Ryujinx.Cpu } } - public unsafe static T Read<T>(IVirtualMemoryManager memory, ulong position) where T : unmanaged + public static T Read<T>(IVirtualMemoryManager memory, ulong position) where T : unmanaged { return MemoryMarshal.Cast<byte, T>(memory.GetSpan(position, Unsafe.SizeOf<T>()))[0]; } - public unsafe static ulong Write<T>(IVirtualMemoryManager memory, ulong position, T value) where T : unmanaged + public static ulong Write<T>(IVirtualMemoryManager memory, ulong position, T value) where T : unmanaged { ReadOnlySpan<byte> data = MemoryMarshal.Cast<T, byte>(MemoryMarshal.CreateReadOnlySpan(ref value, 1)); @@ -42,22 +41,21 @@ namespace Ryujinx.Cpu public static string ReadAsciiString(IVirtualMemoryManager memory, ulong position, long maxSize = -1) { - using (RecyclableMemoryStream ms = MemoryStreamManager.Shared.GetStream()) - { - for (long offs = 0; offs < maxSize || maxSize == -1; offs++) - { - byte value = memory.Read<byte>(position + (ulong)offs); + using RecyclableMemoryStream ms = MemoryStreamManager.Shared.GetStream(); - if (value == 0) - { - break; - } + for (long offs = 0; offs < maxSize || maxSize == -1; offs++) + { + byte value = memory.Read<byte>(position + (ulong)offs); - ms.WriteByte(value); + if (value == 0) + { + break; } - return Encoding.ASCII.GetString(ms.GetReadOnlySequence()); + ms.WriteByte(value); } + + return Encoding.ASCII.GetString(ms.GetReadOnlySequence()); } } -}
\ No newline at end of file +} |