ipc: additional fixes
This commit is contained in:
parent
c10e720ba9
commit
fee263c59c
|
@ -280,7 +280,7 @@ void ReadInArgument(bool is_domain, CallArguments& args, const u8* raw_data, HLE
|
|||
|
||||
u32 value{};
|
||||
std::memcpy(&value, raw_data + ArgOffset, ArgSize);
|
||||
std::get<ArgIndex>(args) = ctx.GetDomainHandler<ArgType::Type>(value - 1);
|
||||
std::get<ArgIndex>(args) = ctx.GetDomainHandler<typename ArgType::element_type>(value - 1);
|
||||
|
||||
return ReadInArgument<MethodArguments, CallArguments, ArgAlign, ArgEnd, HandleIndex, InBufferIndex, OutBufferIndex, true, ArgIndex + 1>(is_domain, args, raw_data, ctx, temp);
|
||||
} else if constexpr (ArgumentTraits<ArgType>::Type == ArgumentType::InCopyHandle) {
|
||||
|
|
|
@ -65,6 +65,14 @@ struct ClientProcessId {
|
|||
};
|
||||
|
||||
struct ProcessId {
|
||||
explicit ProcessId() : pid() {}
|
||||
explicit ProcessId(u64 p) : pid(p) {}
|
||||
/* implicit */ ProcessId(const ClientProcessId& c) : pid(c.pid) {}
|
||||
|
||||
bool operator==(const ProcessId& rhs) const {
|
||||
return pid == rhs.pid;
|
||||
}
|
||||
|
||||
explicit operator bool() const {
|
||||
return pid != 0;
|
||||
}
|
||||
|
@ -291,4 +299,4 @@ private:
|
|||
};
|
||||
// clang-format on
|
||||
|
||||
} // namespace Service
|
||||
} // namespace Service
|
||||
|
|
|
@ -299,8 +299,12 @@ Result HLERequestContext::WriteToOutgoingCommandBuffer() {
|
|||
if (GetManager()->IsDomain()) {
|
||||
current_offset = domain_offset - static_cast<u32>(outgoing_domain_objects.size());
|
||||
for (auto& object : outgoing_domain_objects) {
|
||||
GetManager()->AppendDomainHandler(std::move(object));
|
||||
cmd_buf[current_offset++] = static_cast<u32_le>(GetManager()->DomainHandlerCount());
|
||||
if (object) {
|
||||
GetManager()->AppendDomainHandler(std::move(object));
|
||||
cmd_buf[current_offset++] = static_cast<u32_le>(GetManager()->DomainHandlerCount());
|
||||
} else {
|
||||
cmd_buf[current_offset++] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Reference in New Issue