Explorar o código

HIPC: Fix reply possibly also receiving one request (#4232)

gdkchan %!s(int64=3) %!d(string=hai) anos
pai
achega
6f60e102a2
Modificáronse 2 ficheiros con 2 adicións e 14 borrados
  1. 0 8
      Ryujinx.Horizon.Common/Result.cs
  2. 2 6
      Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs

+ 0 - 8
Ryujinx.Horizon.Common/Result.cs

@@ -100,14 +100,6 @@ namespace Ryujinx.Horizon.Common
             }
         }
 
-        public void AbortOnFailureUnless(Result result, Result result2)
-        {
-            if (this != Success && this != result && this != result2)
-            {
-                ThrowInvalidResult();
-            }
-        }
-
         private void ThrowInvalidResult()
         {
             throw new InvalidResultException(this);

+ 2 - 6
Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs

@@ -51,22 +51,18 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc
         {
             Result result = ReplyImpl(sessionHandle, messageBuffer);
 
-            result.AbortOnFailureUnless(KernelResult.TimedOut, KernelResult.PortRemoteClosed);
+            result.AbortUnless(KernelResult.TimedOut, KernelResult.PortRemoteClosed);
 
             return Result.Success;
         }
 
         private static Result ReplyImpl(int sessionHandle, ReadOnlySpan<byte> messageBuffer)
         {
-            Span<int> handles = stackalloc int[1];
-
-            handles[0] = sessionHandle;
-
             var tlsSpan = HorizonStatic.AddressSpace.GetSpan(HorizonStatic.ThreadContext.TlsAddress, TlsMessageBufferSize);
 
             if (messageBuffer == tlsSpan)
             {
-                return HorizonStatic.Syscall.ReplyAndReceive(out _, handles, sessionHandle, 0);
+                return HorizonStatic.Syscall.ReplyAndReceive(out _, ReadOnlySpan<int>.Empty, sessionHandle, 0);
             }
             else
             {