summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2019-04-14 17:17:00 +0200
committerGitHub <noreply@github.com>2019-04-14 17:17:00 +0200
commitd7b52703481bc8908474fa41408df66064d06d8c (patch)
treeb79ca3d3acf38af87ad5eef3d6bb1ebceca04ba2 /Source/Core
parent0f8e5ab207b47331595af99df0b699de1081d9f1 (diff)
parent4f915760e8a91aacf1c7387289c471fd31d8c40e (diff)
Merge pull request #7988 from JosJuice/fix-wii-save-import
Fix importing Wii save files with sizes not divisible by 64
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/HW/WiiSave.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/Source/Core/Core/HW/WiiSave.cpp b/Source/Core/Core/HW/WiiSave.cpp
index 575f04a643..0f8d48c77e 100644
--- a/Source/Core/Core/HW/WiiSave.cpp
+++ b/Source/Core/Core/HW/WiiSave.cpp
@@ -311,17 +311,20 @@ public:
std::string{file_hdr.name.data(), strnlen(file_hdr.name.data(), file_hdr.name.size())};
if (type == SaveFile::Type::File)
{
- const u32 rounded_size = Common::AlignUp<u32>(file_hdr.size, BLOCK_SZ);
+ const u32 size = file_hdr.size;
+ const u32 rounded_size = Common::AlignUp<u32>(size, BLOCK_SZ);
const u64 pos = m_file.Tell();
std::array<u8, 0x10> iv = file_hdr.iv;
- save_file.data = [this, rounded_size, iv, pos]() mutable -> std::optional<std::vector<u8>> {
+ save_file.data = [this, size, rounded_size, iv,
+ pos]() mutable -> std::optional<std::vector<u8>> {
std::vector<u8> file_data(rounded_size);
if (!m_file.Seek(pos, SEEK_SET) || !m_file.ReadBytes(file_data.data(), rounded_size))
return {};
m_iosc.Decrypt(IOS::HLE::IOSC::HANDLE_SD_KEY, iv.data(), file_data.data(), rounded_size,
file_data.data(), IOS::PID_ES);
+ file_data.resize(size);
return file_data;
};
m_file.Seek(pos + rounded_size, SEEK_SET);