summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/hle_ipc.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-01-17 07:16:55 +0100
committerbunnei <bunneidev@gmail.com>2018-01-17 07:20:10 +0100
commit30cb98f874d0df9e818976f2140135ac8fe1501b (patch)
tree53bba56a04da35b8c262038db928bc0158458389 /src/core/hle/kernel/hle_ipc.cpp
parentloggin: Add IPC logging category. (diff)
downloadyuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.tar
yuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.tar.gz
yuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.tar.bz2
yuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.tar.lz
yuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.tar.xz
yuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.tar.zst
yuzu-30cb98f874d0df9e818976f2140135ac8fe1501b.zip
Diffstat (limited to 'src/core/hle/kernel/hle_ipc.cpp')
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index afa09b404..2ccc242f6 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -102,13 +102,20 @@ void HLERequestContext::ParseCommandBuffer(u32_le* src_cmdbuf, bool incoming) {
data_payload_header =
std::make_unique<IPC::DataPayloadHeader>(rp.PopRaw<IPC::DataPayloadHeader>());
+ data_payload_offset = rp.GetCurrentOffset();
+
+ if (domain_message_header && domain_message_header->command ==
+ IPC::DomainMessageHeader::CommandType::CloseVirtualHandle) {
+ // CloseVirtualHandle command does not have SFC* or any data
+ return;
+ }
+
if (incoming) {
ASSERT(data_payload_header->magic == Common::MakeMagic('S', 'F', 'C', 'I'));
} else {
ASSERT(data_payload_header->magic == Common::MakeMagic('S', 'F', 'C', 'O'));
}
- data_payload_offset = rp.GetCurrentOffset();
command = rp.Pop<u32_le>();
rp.Skip(1, false); // The command is actually an u64, but we don't use the high part.
}