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
commitb51c1544b9fff19678a37932c4a87ec9e3e91e2b (patch)
tree59158d60c840dd4e474cf47b463d696cfc0a44cd /src/core/hle/kernel/k_event.cpp
parent7dfe35eca69c5c59f32c8ffa3d3adc5e7806c011 (diff)
parentb34d3d58821d15ecb5ffc1b436c908ffbb29adea (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 27f70e5c5..d973853ab 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