From b44a564792dc391aa2012b424b04ea50c83e27d1 Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 6 Apr 2022 17:42:23 -0700 Subject: hle: kernel: k_server_port: Release ref-counted host emulation members on Destroy. --- src/core/hle/kernel/k_server_port.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/core/hle/kernel/k_server_port.cpp') diff --git a/src/core/hle/kernel/k_server_port.cpp b/src/core/hle/kernel/k_server_port.cpp index 433fc98e1..6922a07cb 100644 --- a/src/core/hle/kernel/k_server_port.cpp +++ b/src/core/hle/kernel/k_server_port.cpp @@ -62,6 +62,9 @@ void KServerPort::Destroy() { // Close our reference to our parent. parent->Close(); + + // Release host emulation members. + session_handler.reset(); } bool KServerPort::IsSignaled() const { -- cgit v1.2.3 From a7f73d606f596ab73cf794a76c06cd955033cada Mon Sep 17 00:00:00 2001 From: bunnei Date: Wed, 6 Apr 2022 17:44:06 -0700 Subject: hle: kernel: Unify and integrate reference tracking for KServerPort/KServerSession. - These are not managed elsewhere, and need to be tracked and closed on emulation shutdown. --- src/core/hle/kernel/k_server_port.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/core/hle/kernel/k_server_port.cpp') diff --git a/src/core/hle/kernel/k_server_port.cpp b/src/core/hle/kernel/k_server_port.cpp index 6922a07cb..e66c0c992 100644 --- a/src/core/hle/kernel/k_server_port.cpp +++ b/src/core/hle/kernel/k_server_port.cpp @@ -65,6 +65,9 @@ void KServerPort::Destroy() { // Release host emulation members. session_handler.reset(); + + // Ensure that the global list tracking server objects does not hold on to a reference. + kernel.UnregisterServerObject(this); } bool KServerPort::IsSignaled() const { -- cgit v1.2.3