Răsfoiți Sursa

[hipc] Fix 'Unexpected result code Success returned' in Reply() (#4215)

* horizon: Add AbortOnFailureUnless()

* hipc: Replace AbortUnless() with AbortOnFailureUnless() in Reply()
TSRBerry 3 ani în urmă
părinte
comite
81fae0d1a6
2 a modificat fișierele cu 11 adăugiri și 3 ștergeri
  1. 9 1
      Ryujinx.Horizon.Common/Result.cs
  2. 2 2
      Ryujinx.Horizon/Sdk/Sf/Hipc/Api.cs

+ 9 - 1
Ryujinx.Horizon.Common/Result.cs

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

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

@@ -51,7 +51,7 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc
         {
         {
             Result result = ReplyImpl(sessionHandle, messageBuffer);
             Result result = ReplyImpl(sessionHandle, messageBuffer);
 
 
-            result.AbortUnless(KernelResult.TimedOut, KernelResult.PortRemoteClosed);
+            result.AbortOnFailureUnless(KernelResult.TimedOut, KernelResult.PortRemoteClosed);
 
 
             return Result.Success;
             return Result.Success;
         }
         }
@@ -86,4 +86,4 @@ namespace Ryujinx.Horizon.Sdk.Sf.Hipc
             return result;
             return result;
         }
         }
     }
     }
-}
+}