summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 948989b31..d2d893992 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1575,14 +1575,21 @@ static ResultCode ClearEvent(Handle handle) {
1575 LOG_TRACE(Kernel_SVC, "called, event=0x{:08X}", handle); 1575 LOG_TRACE(Kernel_SVC, "called, event=0x{:08X}", handle);
1576 1576
1577 const auto& handle_table = Core::CurrentProcess()->GetHandleTable(); 1577 const auto& handle_table = Core::CurrentProcess()->GetHandleTable();
1578 SharedPtr<ReadableEvent> evt = handle_table.Get<ReadableEvent>(handle); 1578
1579 if (evt == nullptr) { 1579 auto writable_event = handle_table.Get<WritableEvent>(handle);
1580 LOG_ERROR(Kernel_SVC, "Event handle does not exist, handle=0x{:08X}", handle); 1580 if (writable_event) {
1581 return ERR_INVALID_HANDLE; 1581 writable_event->Clear();
1582 return RESULT_SUCCESS;
1582 } 1583 }
1583 1584
1584 evt->Clear(); 1585 auto readable_event = handle_table.Get<ReadableEvent>(handle);
1585 return RESULT_SUCCESS; 1586 if (readable_event) {
1587 readable_event->Clear();
1588 return RESULT_SUCCESS;
1589 }
1590
1591 LOG_ERROR(Kernel_SVC, "Event handle does not exist, handle=0x{:08X}", handle);
1592 return ERR_INVALID_HANDLE;
1586} 1593}
1587 1594
1588static ResultCode GetProcessInfo(u64* out, Handle process_handle, u32 type) { 1595static ResultCode GetProcessInfo(u64* out, Handle process_handle, u32 type) {