summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-04-20 05:54:25 +0200
committerGitHub <noreply@github.com>2021-04-20 05:54:25 +0200
commit17704271f420f6846d3db4d5e72745ce3d0a9117 (patch)
tree3e832d70c5f41798efd7a139d3b33d71a6d7488c
parentMerge pull request #6215 from lioncash/duplicate (diff)
parentgeneral: Write buffers before pushing raw arguments (diff)
downloadyuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.tar
yuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.tar.gz
yuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.tar.bz2
yuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.tar.lz
yuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.tar.xz
yuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.tar.zst
yuzu-17704271f420f6846d3db4d5e72745ce3d0a9117.zip
-rw-r--r--src/core/hle/service/set/set.cpp3
-rw-r--r--src/core/hle/service/time/time_zone_service.cpp6
-rw-r--r--src/core/hle/service/vi/vi.cpp8
3 files changed, 12 insertions, 5 deletions
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp
index bc7dc776f..fbdc4793d 100644
--- a/src/core/hle/service/set/set.cpp
+++ b/src/core/hle/service/set/set.cpp
@@ -104,9 +104,10 @@ void GetKeyCodeMapImpl(Kernel::HLERequestContext& ctx) {
layout = key_code->second;
}
+ ctx.WriteBuffer(layout);
+
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS);
- ctx.WriteBuffer(layout);
}
} // Anonymous namespace
diff --git a/src/core/hle/service/time/time_zone_service.cpp b/src/core/hle/service/time/time_zone_service.cpp
index 3117627cf..19d7a1a0c 100644
--- a/src/core/hle/service/time/time_zone_service.cpp
+++ b/src/core/hle/service/time/time_zone_service.cpp
@@ -140,11 +140,12 @@ void ITimeZoneService::ToPosixTime(Kernel::HLERequestContext& ctx) {
return;
}
+ ctx.WriteBuffer(posix_time);
+
// TODO(bunnei): Handle multiple times
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS);
rb.PushRaw<u32>(1); // Number of times we're returning
- ctx.WriteBuffer(posix_time);
}
void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) {
@@ -163,10 +164,11 @@ void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) {
return;
}
+ ctx.WriteBuffer(posix_time);
+
IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS);
rb.PushRaw<u32>(1); // Number of times we're returning
- ctx.WriteBuffer(posix_time);
}
} // namespace Service::Time
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index 348360b51..7ae07d072 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -1129,9 +1129,11 @@ private:
}
NativeWindow native_window{*buffer_queue_id};
+ const auto buffer_size = ctx.WriteBuffer(native_window.Serialize());
+
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS);
- rb.Push<u64>(ctx.WriteBuffer(native_window.Serialize()));
+ rb.Push<u64>(buffer_size);
}
void CloseLayer(Kernel::HLERequestContext& ctx) {
@@ -1173,10 +1175,12 @@ private:
}
NativeWindow native_window{*buffer_queue_id};
+ const auto buffer_size = ctx.WriteBuffer(native_window.Serialize());
+
IPC::ResponseBuilder rb{ctx, 6};
rb.Push(RESULT_SUCCESS);
rb.Push(*layer_id);
- rb.Push<u64>(ctx.WriteBuffer(native_window.Serialize()));
+ rb.Push<u64>(buffer_size);
}
void DestroyStrayLayer(Kernel::HLERequestContext& ctx) {