Fix KScopedAutoObject object leak when SendSyncRequest
This commit is contained in:
parent
4baef7905e
commit
7cd43b139a
|
@ -320,18 +320,20 @@ static ResultCode SendSyncRequest(Core::System& system, Handle handle) {
|
||||||
|
|
||||||
auto& kernel = system.Kernel();
|
auto& kernel = system.Kernel();
|
||||||
|
|
||||||
KScopedAutoObject session =
|
|
||||||
kernel.CurrentProcess()->GetHandleTable().GetObject<KClientSession>(handle);
|
|
||||||
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
|
||||||
LOG_TRACE(Kernel_SVC, "called handle=0x{:08X}({})", handle, session->GetName());
|
|
||||||
|
|
||||||
auto thread = kernel.CurrentScheduler()->GetCurrentThread();
|
auto thread = kernel.CurrentScheduler()->GetCurrentThread();
|
||||||
{
|
{
|
||||||
KScopedSchedulerLock lock(kernel);
|
KScopedSchedulerLock lock(kernel);
|
||||||
thread->SetState(ThreadState::Waiting);
|
thread->SetState(ThreadState::Waiting);
|
||||||
thread->SetWaitReasonForDebugging(ThreadWaitReasonForDebugging::IPC);
|
thread->SetWaitReasonForDebugging(ThreadWaitReasonForDebugging::IPC);
|
||||||
|
|
||||||
|
{
|
||||||
|
KScopedAutoObject session =
|
||||||
|
kernel.CurrentProcess()->GetHandleTable().GetObject<KClientSession>(handle);
|
||||||
|
R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
|
||||||
|
LOG_TRACE(Kernel_SVC, "called handle=0x{:08X}({})", handle, session->GetName());
|
||||||
session->SendSyncRequest(thread, system.Memory(), system.CoreTiming());
|
session->SendSyncRequest(thread, system.Memory(), system.CoreTiming());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
KSynchronizationObject* dummy{};
|
KSynchronizationObject* dummy{};
|
||||||
return thread->GetWaitResult(std::addressof(dummy));
|
return thread->GetWaitResult(std::addressof(dummy));
|
||||||
|
|
Reference in New Issue