diff options
| author | bunnei <bunneidev@gmail.com> | 2022-11-11 22:37:04 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-11 22:37:04 -0800 |
| commit | d942e886f55ed017253be00a20b1059b25a8febd (patch) | |
| tree | 59158d60c840dd4e474cf47b463d696cfc0a44cd /src/core/hle/kernel/k_event.cpp | |
| parent | 28aaaaf02ea6df6d7f3b1c8bbc258d1047beae0d (diff) | |
| parent | 47ce2e44d946273abe632c6b9954d7e9b2a233c5 (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.cpp | 15 |
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 |
