From 287f4e6fa108d51ca09cc4c21e350fef7b85afa1 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Tue, 23 Feb 2021 14:21:36 -0800 Subject: [PATCH] sm: fix abort on RegisterService while at port limit closes #1382 --- stratosphere/sm/source/impl/sm_service_manager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stratosphere/sm/source/impl/sm_service_manager.cpp b/stratosphere/sm/source/impl/sm_service_manager.cpp index 48e1de943..ea2fae307 100644 --- a/stratosphere/sm/source/impl/sm_service_manager.cpp +++ b/stratosphere/sm/source/impl/sm_service_manager.cpp @@ -409,13 +409,15 @@ namespace ams::sm::impl { /* Create the new service. */ *out = INVALID_HANDLE; - R_TRY(svcCreatePort(out, free_service->port_h.GetPointerAndClear(), max_sessions, is_light, free_service->name.name)); + Handle server_hnd = INVALID_HANDLE; + R_TRY(svcCreatePort(out, std::addressof(server_hnd), max_sessions, is_light, free_service->name.name)); /* Save info. */ free_service->name = service; free_service->owner_process_id = process_id; free_service->max_sessions = max_sessions; free_service->is_light = is_light; + *free_service->port_h.GetPointerAndClear() = server_hnd; /* This might undefer some requests. */ TriggerResume(service);