summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/CompressedBlob.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-04-12 21:45:55 +0200
committerJosJuice <josjuice@gmail.com>2020-04-12 21:45:55 +0200
commit26b21e3186386df015b02eb23dacd04f86669d8f (patch)
treeef2d6911b86861b8d1f97baf84f876fceb162bf3 /Source/Core/DiscIO/CompressedBlob.cpp
parentd8d620ef0e818373ab61cb9c7eb26d110f65c664 (diff)
DiscIO: Fix decompressing writing too little sometimes
This issue cannot happen with good dumps due to their size, but it can happen with trimmed dumps.
Diffstat (limited to 'Source/Core/DiscIO/CompressedBlob.cpp')
-rw-r--r--Source/Core/DiscIO/CompressedBlob.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/Source/Core/DiscIO/CompressedBlob.cpp b/Source/Core/DiscIO/CompressedBlob.cpp
index 37af397b38..1fe8c4c921 100644
--- a/Source/Core/DiscIO/CompressedBlob.cpp
+++ b/Source/Core/DiscIO/CompressedBlob.cpp
@@ -372,6 +372,8 @@ bool DecompressBlobToFile(const std::string& infile_path, const std::string& out
static const size_t BUFFER_BLOCKS = 32;
size_t buffer_size = header.block_size * BUFFER_BLOCKS;
size_t last_buffer_size = header.block_size * (header.num_blocks % BUFFER_BLOCKS);
+ if (last_buffer_size == 0)
+ last_buffer_size = buffer_size;
std::vector<u8> buffer(buffer_size);
u32 num_buffers = (header.num_blocks + BUFFER_BLOCKS - 1) / BUFFER_BLOCKS;
int progress_monitor = std::max<int>(1, num_buffers / 100);