aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/k_server_session.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-07-02 15:19:04 -0700
committerbunnei <bunneidev@gmail.com>2021-07-20 18:54:56 -0700
commitbeeed68944de204fd091a79e9a0760c784787c71 (patch)
tree1412e9e92f8f3f1bd67d2d237234d149011a55d2 /src/core/hle/kernel/k_server_session.cpp
parent179243473b70190383b36dc140f2350120aa6e1e (diff)
hle: kernel: Track and release server sessions, and protect methods with locks.
Diffstat (limited to 'src/core/hle/kernel/k_server_session.cpp')
-rw-r--r--src/core/hle/kernel/k_server_session.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index 5c3c13ce68..b9f24475c7 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -28,7 +28,10 @@ namespace Kernel {
KServerSession::KServerSession(KernelCore& kernel_) : KSynchronizationObject{kernel_} {}
-KServerSession::~KServerSession() {}
+KServerSession::~KServerSession() {
+ // Ensure that the global list tracking server sessions does not hold on to a reference.
+ kernel.UnregisterServerSession(this);
+}
void KServerSession::Initialize(KSession* parent_session_, std::string&& name_,
std::shared_ptr<SessionRequestManager> manager_) {