From cf4c78b9c825f61ff3ee83eff88442a149ae01d9 Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Mon, 12 Jun 2023 21:12:06 -0300
Subject: Make LM skip instead of crashing for invalid messages (#5290)

---
 src/Ryujinx.Common/Memory/SpanReader.cs | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

(limited to 'src/Ryujinx.Common/Memory/SpanReader.cs')

diff --git a/src/Ryujinx.Common/Memory/SpanReader.cs b/src/Ryujinx.Common/Memory/SpanReader.cs
index 673932d0..9a1a0a3f 100644
--- a/src/Ryujinx.Common/Memory/SpanReader.cs
+++ b/src/Ryujinx.Common/Memory/SpanReader.cs
@@ -24,6 +24,24 @@ namespace Ryujinx.Common.Memory
             return value;
         }
 
+        public bool TryRead<T>(out T value) where T : unmanaged
+        {
+            int valueSize = Unsafe.SizeOf<T>();
+
+            if (valueSize > _input.Length)
+            {
+                value = default;
+
+                return false;
+            }
+
+            value = MemoryMarshal.Cast<byte, T>(_input)[0];
+
+            _input = _input.Slice(valueSize);
+
+            return true;
+        }
+
         public ReadOnlySpan<byte> GetSpan(int size)
         {
             ReadOnlySpan<byte> data = _input.Slice(0, size);
-- 
cgit v1.2.3-70-g09d2