summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormailwl <mailwl@gmail.com>2018-02-20 19:59:58 +0100
committermailwl <mailwl@gmail.com>2018-02-20 19:59:58 +0100
commit827152d1fd72d13b47b331f64455fc2a641877b1 (patch)
tree7233f6661549d2c0d1de8c037c7124f47b3f57b4
parentIPC: add domain header to response if only it exists in request (diff)
downloadyuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar
yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.gz
yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.bz2
yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.lz
yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.xz
yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.tar.zst
yuzu-827152d1fd72d13b47b331f64455fc2a641877b1.zip
-rw-r--r--src/core/hle/ipc_helpers.h3
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp2
-rw-r--r--src/core/hle/kernel/server_session.cpp2
3 files changed, 4 insertions, 3 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index 97290fec5..3f87c4297 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -118,7 +118,8 @@ public:
AlignWithPadding();
- if (context.Session()->IsDomain() && context.GetDomainMessageHeader()) {
+ const bool request_has_domain_header{context.GetDomainMessageHeader() != nullptr};
+ if (context.Session()->IsDomain() && request_has_domain_header) {
IPC::DomainMessageHeader domain_header{};
domain_header.num_objects = num_domain_objects;
PushRaw(domain_header);
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 3b1f3154d..eef784f5e 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -198,7 +198,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(u32_le* dst_cmdbuf, P
// TODO(Subv): Translate the X/A/B/W buffers.
- if (domain_message_header && Session()->IsDomain()) {
+ if (Session()->IsDomain() && domain_message_header) {
ASSERT(domain_message_header->num_objects == domain_objects.size());
// Write the domain objects to the command buffer, these go after the raw untranslated data.
// TODO(Subv): This completely ignores C buffers.
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp
index 42c2f760b..5f31cf19b 100644
--- a/src/core/hle/kernel/server_session.cpp
+++ b/src/core/hle/kernel/server_session.cpp
@@ -96,7 +96,7 @@ ResultCode ServerSession::HandleSyncRequest(SharedPtr<Thread> thread) {
ResultCode result = RESULT_SUCCESS;
// If the session has been converted to a domain, handle the domain request
- if (context.GetDomainMessageHeader() && IsDomain()) {
+ if (IsDomain() && context.GetDomainMessageHeader()) {
result = HandleDomainSyncRequest(context);
// If there is no domain header, the regular session handler is used
} else if (hle_handler != nullptr) {