summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Feng Chen2021-09-25 22:16:21 +0800
committerGravatar Feng Chen2021-09-25 22:16:21 +0800
commit7cd43b139a935ed0b7bc34a31620c3ffb70c7e48 (patch)
treeb461fe51dff478144c34920cd12307987fdb8eb8 /src
parentMerge pull request #7043 from astrelsky/cmake (diff)
downloadyuzu-7cd43b139a935ed0b7bc34a31620c3ffb70c7e48.tar.gz
yuzu-7cd43b139a935ed0b7bc34a31620c3ffb70c7e48.tar.xz
yuzu-7cd43b139a935ed0b7bc34a31620c3ffb70c7e48.zip
Fix KScopedAutoObject object leak when SendSyncRequest
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/svc.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 62fb06c45..f98f24a60 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -320,17 +320,19 @@ static ResultCode SendSyncRequest(Core::System& system, Handle handle) {
320 320
321 auto& kernel = system.Kernel(); 321 auto& kernel = system.Kernel();
322 322
323 KScopedAutoObject session =
324 kernel.CurrentProcess()->GetHandleTable().GetObject<KClientSession>(handle);
325 R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
326 LOG_TRACE(Kernel_SVC, "called handle=0x{:08X}({})", handle, session->GetName());
327
328 auto thread = kernel.CurrentScheduler()->GetCurrentThread(); 323 auto thread = kernel.CurrentScheduler()->GetCurrentThread();
329 { 324 {
330 KScopedSchedulerLock lock(kernel); 325 KScopedSchedulerLock lock(kernel);
331 thread->SetState(ThreadState::Waiting); 326 thread->SetState(ThreadState::Waiting);
332 thread->SetWaitReasonForDebugging(ThreadWaitReasonForDebugging::IPC); 327 thread->SetWaitReasonForDebugging(ThreadWaitReasonForDebugging::IPC);
333 session->SendSyncRequest(thread, system.Memory(), system.CoreTiming()); 328
329 {
330 KScopedAutoObject session =
331 kernel.CurrentProcess()->GetHandleTable().GetObject<KClientSession>(handle);
332 R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
333 LOG_TRACE(Kernel_SVC, "called handle=0x{:08X}({})", handle, session->GetName());
334 session->SendSyncRequest(thread, system.Memory(), system.CoreTiming());
335 }
334 } 336 }
335 337
336 KSynchronizationObject* dummy{}; 338 KSynchronizationObject* dummy{};