mirror of
https://git.h3cjp.net/H3cJP/citra.git
synced 2024-11-23 23:23:02 +00:00
IPC: Fixed pushing ResultCodes into the command buffer.
They should have 32 bits of padding after the error code now.
This commit is contained in:
parent
32847d8b86
commit
80f6df5414
|
@ -142,6 +142,13 @@ void RequestBuilder::PushRaw(const T& value) {
|
|||
index += (sizeof(T) + 3) / 4; // round up to word length
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void RequestBuilder::Push(ResultCode value) {
|
||||
// Result codes are actually 64-bit in the IPC buffer, but only the high part is discarded.
|
||||
Push(value.raw);
|
||||
Push<u32>(0);
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void RequestBuilder::Push(u8 value) {
|
||||
PushRaw(value);
|
||||
|
@ -163,11 +170,6 @@ inline void RequestBuilder::Push(bool value) {
|
|||
Push(static_cast<u8>(value));
|
||||
}
|
||||
|
||||
template <>
|
||||
inline void RequestBuilder::Push(ResultCode value) {
|
||||
Push(value.raw);
|
||||
}
|
||||
|
||||
template <typename First, typename... Other>
|
||||
void RequestBuilder::Push(const First& first_value, const Other&... other_values) {
|
||||
Push(first_value);
|
||||
|
|
|
@ -107,7 +107,7 @@ void SM::GetService(Kernel::HLERequestContext& ctx) {
|
|||
|
||||
auto client_port = service_manager->GetServicePort(name);
|
||||
if (client_port.Failed()) {
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0, 0);
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0, 0);
|
||||
rb.Push(client_port.Code());
|
||||
LOG_ERROR(Service_SM, "called service=%s -> error 0x%08X", name.c_str(),
|
||||
client_port.Code().raw);
|
||||
|
@ -120,7 +120,7 @@ void SM::GetService(Kernel::HLERequestContext& ctx) {
|
|||
LOG_DEBUG(Service_SM, "called service=%s -> session=%u", name.c_str(),
|
||||
(*session)->GetObjectId());
|
||||
IPC::RequestBuilder rb = rp.MakeBuilder(2, 0, 1);
|
||||
rb.Push<u64>(0);
|
||||
rb.Push(session.Code());
|
||||
rb.PushMoveObjects(std::move(session).Unwrap());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue