Merge pull request #6217 from Morph1984/consistent-writebuffers

general: Write buffers before pushing raw arguments
This commit is contained in:
bunnei 2021-04-19 20:54:25 -07:00 committed by GitHub
commit 17704271f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 5 deletions

View file

@ -104,9 +104,10 @@ void GetKeyCodeMapImpl(Kernel::HLERequestContext& ctx) {
layout = key_code->second; layout = key_code->second;
} }
ctx.WriteBuffer(layout);
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
ctx.WriteBuffer(layout);
} }
} // Anonymous namespace } // Anonymous namespace

View file

@ -140,11 +140,12 @@ void ITimeZoneService::ToPosixTime(Kernel::HLERequestContext& ctx) {
return; return;
} }
ctx.WriteBuffer(posix_time);
// TODO(bunnei): Handle multiple times // TODO(bunnei): Handle multiple times
IPC::ResponseBuilder rb{ctx, 3}; IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushRaw<u32>(1); // Number of times we're returning rb.PushRaw<u32>(1); // Number of times we're returning
ctx.WriteBuffer(posix_time);
} }
void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) { void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) {
@ -163,10 +164,11 @@ void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) {
return; return;
} }
ctx.WriteBuffer(posix_time);
IPC::ResponseBuilder rb{ctx, 3}; IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushRaw<u32>(1); // Number of times we're returning rb.PushRaw<u32>(1); // Number of times we're returning
ctx.WriteBuffer(posix_time);
} }
} // namespace Service::Time } // namespace Service::Time

View file

@ -1129,9 +1129,11 @@ private:
} }
NativeWindow native_window{*buffer_queue_id}; NativeWindow native_window{*buffer_queue_id};
const auto buffer_size = ctx.WriteBuffer(native_window.Serialize());
IPC::ResponseBuilder rb{ctx, 4}; IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push<u64>(ctx.WriteBuffer(native_window.Serialize())); rb.Push<u64>(buffer_size);
} }
void CloseLayer(Kernel::HLERequestContext& ctx) { void CloseLayer(Kernel::HLERequestContext& ctx) {
@ -1173,10 +1175,12 @@ private:
} }
NativeWindow native_window{*buffer_queue_id}; NativeWindow native_window{*buffer_queue_id};
const auto buffer_size = ctx.WriteBuffer(native_window.Serialize());
IPC::ResponseBuilder rb{ctx, 6}; IPC::ResponseBuilder rb{ctx, 6};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push(*layer_id); rb.Push(*layer_id);
rb.Push<u64>(ctx.WriteBuffer(native_window.Serialize())); rb.Push<u64>(buffer_size);
} }
void DestroyStrayLayer(Kernel::HLERequestContext& ctx) { void DestroyStrayLayer(Kernel::HLERequestContext& ctx) {