summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2022-12-16 17:57:48 +0100
committerGitHub <noreply@github.com>2022-12-16 17:57:48 +0100
commit789da737afe8e3b242d8adffb1444a663a78117d (patch)
tree797f1d6f4f2f9faa970322dce426b5d00bf2a9eb
parentMerge pull request #9444 from german77/free_threads (diff)
parenthle_ipc: Reserve vectors before populating (diff)
downloadyuzu-789da737afe8e3b242d8adffb1444a663a78117d.tar
yuzu-789da737afe8e3b242d8adffb1444a663a78117d.tar.gz
yuzu-789da737afe8e3b242d8adffb1444a663a78117d.tar.bz2
yuzu-789da737afe8e3b242d8adffb1444a663a78117d.tar.lz
yuzu-789da737afe8e3b242d8adffb1444a663a78117d.tar.xz
yuzu-789da737afe8e3b242d8adffb1444a663a78117d.tar.zst
yuzu-789da737afe8e3b242d8adffb1444a663a78117d.zip
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 06010b8d1..e6479c131 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -167,6 +167,9 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32
}
if (incoming) {
// Populate the object lists with the data in the IPC request.
+ incoming_copy_handles.reserve(handle_descriptor_header->num_handles_to_copy);
+ incoming_move_handles.reserve(handle_descriptor_header->num_handles_to_move);
+
for (u32 handle = 0; handle < handle_descriptor_header->num_handles_to_copy; ++handle) {
incoming_copy_handles.push_back(rp.Pop<Handle>());
}
@@ -181,6 +184,11 @@ void HLERequestContext::ParseCommandBuffer(const KHandleTable& handle_table, u32
}
}
+ buffer_x_desciptors.reserve(command_header->num_buf_x_descriptors);
+ buffer_a_desciptors.reserve(command_header->num_buf_a_descriptors);
+ buffer_b_desciptors.reserve(command_header->num_buf_b_descriptors);
+ buffer_w_desciptors.reserve(command_header->num_buf_w_descriptors);
+
for (u32 i = 0; i < command_header->num_buf_x_descriptors; ++i) {
buffer_x_desciptors.push_back(rp.PopRaw<IPC::BufferDescriptorX>());
}