diff options
| author | JosJuice <josjuice@gmail.com> | 2019-04-14 17:17:00 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-14 17:17:00 +0200 |
| commit | d7b52703481bc8908474fa41408df66064d06d8c (patch) | |
| tree | b79ca3d3acf38af87ad5eef3d6bb1ebceca04ba2 /Source/Core | |
| parent | 0f8e5ab207b47331595af99df0b699de1081d9f1 (diff) | |
| parent | 4f915760e8a91aacf1c7387289c471fd31d8c40e (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.cpp | 7 |
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); |
