summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index b83ee3e69..28c45e8a3 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -22,9 +22,9 @@
22#include "core/core_timing_util.h" 22#include "core/core_timing_util.h"
23#include "core/cpu_manager.h" 23#include "core/cpu_manager.h"
24#include "core/hle/kernel/client_port.h" 24#include "core/hle/kernel/client_port.h"
25#include "core/hle/kernel/client_session.h"
26#include "core/hle/kernel/handle_table.h" 25#include "core/hle/kernel/handle_table.h"
27#include "core/hle/kernel/k_address_arbiter.h" 26#include "core/hle/kernel/k_address_arbiter.h"
27#include "core/hle/kernel/k_client_session.h"
28#include "core/hle/kernel/k_condition_variable.h" 28#include "core/hle/kernel/k_condition_variable.h"
29#include "core/hle/kernel/k_event.h" 29#include "core/hle/kernel/k_event.h"
30#include "core/hle/kernel/k_memory_block.h" 30#include "core/hle/kernel/k_memory_block.h"
@@ -323,12 +323,12 @@ static ResultCode ConnectToNamedPort(Core::System& system, Handle* out_handle,
323 323
324 auto client_port = it->second; 324 auto client_port = it->second;
325 325
326 std::shared_ptr<ClientSession> client_session; 326 KClientSession* client_session{};
327 CASCADE_RESULT(client_session, client_port->Connect()); 327 CASCADE_RESULT(client_session, client_port->Connect());
328 328
329 // Return the client session 329 // Return the client session
330 auto& handle_table = kernel.CurrentProcess()->GetHandleTable(); 330 auto& handle_table = kernel.CurrentProcess()->GetHandleTable();
331 CASCADE_RESULT(*out_handle, handle_table.Create(client_session.get())); 331 CASCADE_RESULT(*out_handle, handle_table.Create(client_session));
332 return RESULT_SUCCESS; 332 return RESULT_SUCCESS;
333} 333}
334 334
@@ -340,15 +340,13 @@ static ResultCode ConnectToNamedPort32(Core::System& system, Handle* out_handle,
340 340
341/// Makes a blocking IPC call to an OS service. 341/// Makes a blocking IPC call to an OS service.
342static ResultCode SendSyncRequest(Core::System& system, Handle handle) { 342static ResultCode SendSyncRequest(Core::System& system, Handle handle) {
343 LOG_TRACE(Kernel_SVC, "called handle=0x{:08X}({})", handle, session->GetName());
344
343 auto& kernel = system.Kernel(); 345 auto& kernel = system.Kernel();
344 const auto& handle_table = kernel.CurrentProcess()->GetHandleTable();
345 auto session = handle_table.Get<ClientSession>(handle);
346 if (!session) {
347 LOG_ERROR(Kernel_SVC, "called with invalid handle=0x{:08X}", handle);
348 return ResultInvalidHandle;
349 }
350 346
351 LOG_TRACE(Kernel_SVC, "called handle=0x{:08X}({})", handle, session->GetName()); 347 KScopedAutoObject session =
348 kernel.CurrentProcess()->GetHandleTable().GetObject<KClientSession>(handle);
349 R_UNLESS(session.IsNotNull(), ResultInvalidHandle);
352 350
353 auto thread = kernel.CurrentScheduler()->GetCurrentThread(); 351 auto thread = kernel.CurrentScheduler()->GetCurrentThread();
354 { 352 {