aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/k_event.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-11-11 22:37:04 -0800
committerGitHub <noreply@github.com>2022-11-11 22:37:04 -0800
commitd942e886f55ed017253be00a20b1059b25a8febd (patch)
tree59158d60c840dd4e474cf47b463d696cfc0a44cd /src/core/hle/kernel/k_event.cpp
parent28aaaaf02ea6df6d7f3b1c8bbc258d1047beae0d (diff)
parent47ce2e44d946273abe632c6b9954d7e9b2a233c5 (diff)
Merge pull request #9224 from liamwhite/services-arent-processes
service_thread: remove explicit KProcess
Diffstat (limited to 'src/core/hle/kernel/k_event.cpp')
-rw-r--r--src/core/hle/kernel/k_event.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/core/hle/kernel/k_event.cpp b/src/core/hle/kernel/k_event.cpp
index 27f70e5c54..d973853abf 100644
--- a/src/core/hle/kernel/k_event.cpp
+++ b/src/core/hle/kernel/k_event.cpp
@@ -20,8 +20,12 @@ void KEvent::Initialize(KProcess* owner) {
m_readable_event.Initialize(this);
// Set our owner process.
- m_owner = owner;
- m_owner->Open();
+ // HACK: this should never be nullptr, but service threads don't have a
+ // proper parent process yet.
+ if (owner != nullptr) {
+ m_owner = owner;
+ m_owner->Open();
+ }
// Mark initialized.
m_initialized = true;
@@ -50,8 +54,11 @@ Result KEvent::Clear() {
void KEvent::PostDestroy(uintptr_t arg) {
// Release the event count resource the owner process holds.
KProcess* owner = reinterpret_cast<KProcess*>(arg);
- owner->GetResourceLimit()->Release(LimitableResource::EventCountMax, 1);
- owner->Close();
+
+ if (owner != nullptr) {
+ owner->GetResourceLimit()->Release(LimitableResource::EventCountMax, 1);
+ owner->Close();
+ }
}
} // namespace Kernel