From 13c374b118f7b39a76b101ec6223a612cda996d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Wed, 11 Jan 2017 18:12:22 +0100 Subject: [PATCH] IOS HLE: Replace some loops with range-based loops --- .../Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp | 7 ++----- .../Core/IPC_HLE/WII_IPC_HLE_Device_es.cpp | 20 +++++++------------ .../Core/IPC_HLE/WII_IPC_HLE_Device_fs.cpp | 7 ++----- .../IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp | 7 ++----- 4 files changed, 13 insertions(+), 28 deletions(-) diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp index 98673c4905..9e4276c792 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_DI.cpp @@ -106,11 +106,8 @@ IPCCommandResult CWII_IPC_HLE_Device_di::IOCtlV(u32 _CommandAddress) // Prepare the out buffer(s) with zeros as a safety precaution // to avoid returning bad values - for (u32 i = 0; i < CommandBuffer.NumberPayloadBuffer; i++) - { - Memory::Memset(CommandBuffer.PayloadBuffer[i].m_Address, 0, - CommandBuffer.PayloadBuffer[i].m_Size); - } + for (const auto& buffer : CommandBuffer.PayloadBuffer) + Memory::Memset(buffer.m_Address, 0, buffer.m_Size); u32 ReturnValue = 0; switch (CommandBuffer.Parameter) diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_es.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_es.cpp index 1ec3a0e065..07553274c1 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_es.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_es.cpp @@ -31,6 +31,7 @@ */ // ============= +#include #include #include #include @@ -241,22 +242,15 @@ IPCCommandResult CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) // Prepare the out buffer(s) with zeroes as a safety precaution // to avoid returning bad values - // XXX: is this still necessary? - for (u32 i = 0; i < Buffer.NumberPayloadBuffer; i++) + for (const auto& buffer : Buffer.PayloadBuffer) { - u32 j; - for (j = 0; j < Buffer.NumberInBuffer; j++) + // Don't zero an out buffer which is also one of the in buffers. + if (std::any_of(Buffer.InBuffer.begin(), Buffer.InBuffer.end(), + [&](const auto& in_buffer) { return in_buffer.m_Address == buffer.m_Address; })) { - if (Buffer.InBuffer[j].m_Address == Buffer.PayloadBuffer[i].m_Address) - { - // The out buffer is the same as one of the in buffers. Don't zero it. - break; - } - } - if (j == Buffer.NumberInBuffer) - { - Memory::Memset(Buffer.PayloadBuffer[i].m_Address, 0, Buffer.PayloadBuffer[i].m_Size); + continue; } + Memory::Memset(buffer.m_Address, 0, buffer.m_Size); } switch (Buffer.Parameter) diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_fs.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_fs.cpp index c76db6f040..fa9d4ed332 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_fs.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_fs.cpp @@ -78,11 +78,8 @@ IPCCommandResult CWII_IPC_HLE_Device_fs::IOCtlV(u32 _CommandAddress) // Prepare the out buffer(s) with zeros as a safety precaution // to avoid returning bad values - for (u32 i = 0; i < CommandBuffer.NumberPayloadBuffer; i++) - { - Memory::Memset(CommandBuffer.PayloadBuffer[i].m_Address, 0, - CommandBuffer.PayloadBuffer[i].m_Size); - } + for (const auto& buffer : CommandBuffer.PayloadBuffer) + Memory::Memset(buffer.m_Address, 0, buffer.m_Size); switch (CommandBuffer.Parameter) { diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp index 3e995eeb35..be712534cd 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp @@ -245,11 +245,8 @@ IPCCommandResult CWII_IPC_HLE_Device_sdio_slot0::IOCtlV(u32 _CommandAddress) // Prepare the out buffer(s) with zeros as a safety precaution // to avoid returning bad values - for (u32 i = 0; i < CommandBuffer.NumberPayloadBuffer; i++) - { - Memory::Memset(CommandBuffer.PayloadBuffer[i].m_Address, 0, - CommandBuffer.PayloadBuffer[i].m_Size); - } + for (const auto& buffer : CommandBuffer.PayloadBuffer) + Memory::Memset(buffer.m_Address, 0, buffer.m_Size); u32 ReturnValue = 0; switch (CommandBuffer.Parameter)