Browse Source
Merge pull request #6217 from Morph1984/consistent-writebuffers
general: Write buffers before pushing raw arguments
pull/15/merge
bunnei
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
12 additions and
5 deletions
-
src/core/hle/service/set/set.cpp
-
src/core/hle/service/time/time_zone_service.cpp
-
src/core/hle/service/vi/vi.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
|
|
|
|
|
|
|
|
|
|
|
|
@ -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
|
|
|
|
@ -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) { |
|
|
|
|