mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-04-22 20:44:49 +00:00
sm: make sure handles don't get clobbered on failure
This commit is contained in:
parent
cbf3ba9b75
commit
57ee3128b5
1 changed files with 6 additions and 0 deletions
|
@ -407,10 +407,16 @@ namespace ams::sm::impl {
|
|||
ServiceInfo *free_service = GetFreeServiceInfo();
|
||||
R_UNLESS(free_service != nullptr, sm::ResultOutOfServices());
|
||||
|
||||
/* Make sure we keep the handles clean */
|
||||
auto handle_guard = SCOPE_GUARD { *out = INVALID_HANDLE; *(free_service->port_h.GetPointer()) = INVALID_HANDLE; };
|
||||
|
||||
/* Create the new service. */
|
||||
*out = INVALID_HANDLE;
|
||||
R_TRY(svcCreatePort(out, free_service->port_h.GetPointerAndClear(), max_sessions, is_light, free_service->name.name));
|
||||
|
||||
/* We succeeded! */
|
||||
handle_guard.Cancel();
|
||||
|
||||
/* Save info. */
|
||||
free_service->name = service;
|
||||
free_service->owner_process_id = process_id;
|
||||
|
|
Loading…
Add table
Reference in a new issue