From 3597650f221036deb382d4e8812e717014619eee Mon Sep 17 00:00:00 2001 From: bunnei Date: Tue, 31 Oct 2017 19:30:05 -0400 Subject: service: Return proper result code for IPC::CommandType::Close. --- src/core/hle/service/service.cpp | 6 ++++-- src/core/hle/service/service.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'src/core/hle/service') diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp index 826a775d1..b5d798e26 100644 --- a/src/core/hle/service/service.cpp +++ b/src/core/hle/service/service.cpp @@ -124,7 +124,7 @@ void ServiceFrameworkBase::InvokeRequest(Kernel::HLERequestContext& ctx) { handler_invoker(this, info->handler_callback, ctx); } -void ServiceFrameworkBase::HandleSyncRequest(SharedPtr server_session) { +ResultCode ServiceFrameworkBase::HandleSyncRequest(SharedPtr server_session) { u32* cmd_buf = (u32*)Memory::GetPointer(Kernel::GetCurrentThread()->GetTLSAddress()); // TODO(yuriks): The kernel should be the one handling this as part of translation after @@ -137,7 +137,7 @@ void ServiceFrameworkBase::HandleSyncRequest(SharedPtr server_ses case IPC::CommandType::Close: { IPC::RequestBuilder rb{context, 1}; rb.Push(RESULT_SUCCESS); - break; + return ResultCode(ErrorModule::HIPC, ErrorDescription::RemoteProcessDead); } case IPC::CommandType::Control: { SM::g_service_manager->InvokeControlRequest(context); @@ -153,6 +153,8 @@ void ServiceFrameworkBase::HandleSyncRequest(SharedPtr server_ses context.WriteToOutgoingCommandBuffer(cmd_buf, *Kernel::g_current_process, Kernel::g_handle_table); + + return RESULT_SUCCESS; } //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h index ff76dd2de..ad5f95292 100644 --- a/src/core/hle/service/service.h +++ b/src/core/hle/service/service.h @@ -63,7 +63,7 @@ public: void InvokeRequest(Kernel::HLERequestContext& ctx); - void HandleSyncRequest(Kernel::SharedPtr server_session) override; + ResultCode HandleSyncRequest(Kernel::SharedPtr server_session) override; protected: /// Member-function pointer type of SyncRequest handlers. -- cgit v1.2.3