summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2021-06-06 17:54:06 -0700
committerGravatar bunnei2021-06-06 17:54:06 -0700
commitada4242c014d791379c02bf4222a39a9e881a692 (patch)
tree6a9e153008d7b927cec278c0d481a2be04cb5736
parenthle: kernel: k_server_session: Ensure service thread is valid before derefere... (diff)
downloadyuzu-ada4242c014d791379c02bf4222a39a9e881a692.tar.gz
yuzu-ada4242c014d791379c02bf4222a39a9e881a692.tar.xz
yuzu-ada4242c014d791379c02bf4222a39a9e881a692.zip
hle: kernel: k_server_session: Return service thread by strong pointer.
-rw-r--r--src/core/hle/kernel/hle_ipc.h6
-rw-r--r--src/core/hle/kernel/k_server_session.cpp2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index 159565203..2aaf93fca 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -85,8 +85,8 @@ public:
85 */ 85 */
86 void ClientDisconnected(KServerSession* session); 86 void ClientDisconnected(KServerSession* session);
87 87
88 std::weak_ptr<ServiceThread> GetServiceThread() const { 88 std::shared_ptr<ServiceThread> GetServiceThread() const {
89 return service_thread; 89 return service_thread.lock();
90 } 90 }
91 91
92protected: 92protected:
@@ -152,7 +152,7 @@ public:
152 session_handler = std::move(handler); 152 session_handler = std::move(handler);
153 } 153 }
154 154
155 std::weak_ptr<ServiceThread> GetServiceThread() const { 155 std::shared_ptr<ServiceThread> GetServiceThread() const {
156 return session_handler->GetServiceThread(); 156 return session_handler->GetServiceThread();
157 } 157 }
158 158
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index 96c8d7b0e..b231f8183 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -119,7 +119,7 @@ ResultCode KServerSession::QueueSyncRequest(KThread* thread, Core::Memory::Memor
119 119
120 context->PopulateFromIncomingCommandBuffer(kernel.CurrentProcess()->GetHandleTable(), cmd_buf); 120 context->PopulateFromIncomingCommandBuffer(kernel.CurrentProcess()->GetHandleTable(), cmd_buf);
121 121
122 if (auto strong_ptr = manager->GetServiceThread().lock(); strong_ptr) { 122 if (auto strong_ptr = manager->GetServiceThread(); strong_ptr) {
123 strong_ptr->QueueSyncRequest(*parent, std::move(context)); 123 strong_ptr->QueueSyncRequest(*parent, std::move(context));
124 return ResultSuccess; 124 return ResultSuccess;
125 } else { 125 } else {