From b871388a31af0194d785d9cf26ce963f169a067c Mon Sep 17 00:00:00 2001
From: Morph <39850852+Morph1984@users.noreply.github.com>
Date: Tue, 2 Nov 2021 22:04:20 -0400
Subject: [PATCH] svc: Correct WaitSynchronization num_handles param type

num_handles is a s32
---
 src/core/hle/kernel/svc.cpp    | 4 ++--
 src/core/hle/kernel/svc_wrap.h | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index c43135856c..f328ce1112 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -409,7 +409,7 @@ static ResultCode GetProcessId32(Core::System& system, u32* out_process_id_low,
 
 /// Wait for the given handles to synchronize, timeout after the specified nanoseconds
 static ResultCode WaitSynchronization(Core::System& system, s32* index, VAddr handles_address,
-                                      u64 num_handles, s64 nano_seconds) {
+                                      s32 num_handles, s64 nano_seconds) {
     LOG_TRACE(Kernel_SVC, "called handles_address=0x{:X}, num_handles={}, nano_seconds={}",
               handles_address, num_handles, nano_seconds);
 
@@ -434,7 +434,7 @@ static ResultCode WaitSynchronization(Core::System& system, s32* index, VAddr ha
 
     // Ensure handles are closed when we're done.
     SCOPE_EXIT({
-        for (u64 i = 0; i < num_handles; ++i) {
+        for (s32 i = 0; i < num_handles; ++i) {
             kernel.UnregisterInUseObject(objs[i]);
             objs[i]->Close();
         }
diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h
index 913b164949..6e62e656f5 100644
--- a/src/core/hle/kernel/svc_wrap.h
+++ b/src/core/hle/kernel/svc_wrap.h
@@ -248,10 +248,10 @@ void SvcWrap64(Core::System& system) {
 }
 
 // Used by WaitSynchronization
-template <ResultCode func(Core::System&, s32*, u64, u64, s64)>
+template <ResultCode func(Core::System&, s32*, u64, s32, s64)>
 void SvcWrap64(Core::System& system) {
     s32 param_1 = 0;
-    const u32 retval = func(system, &param_1, Param(system, 1), static_cast<u32>(Param(system, 2)),
+    const u32 retval = func(system, &param_1, Param(system, 1), static_cast<s32>(Param(system, 2)),
                             static_cast<s64>(Param(system, 3)))
                            .raw;