mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-10 14:39:01 +01:00
DiscIO: Clean up decompression size calculation
We can use subtraction and std::min instead of modulo and explicit if statements. This commit does not change the behavior.
This commit is contained in:
parent
3aa463cdae
commit
19e9a9c945
@ -371,9 +371,6 @@ bool DecompressBlobToFile(const std::string& infile_path, const std::string& out
|
|||||||
const CompressedBlobHeader& header = reader->GetHeader();
|
const CompressedBlobHeader& header = reader->GetHeader();
|
||||||
static const size_t BUFFER_BLOCKS = 32;
|
static const size_t BUFFER_BLOCKS = 32;
|
||||||
size_t buffer_size = header.block_size * BUFFER_BLOCKS;
|
size_t buffer_size = header.block_size * BUFFER_BLOCKS;
|
||||||
size_t last_buffer_size = header.data_size % buffer_size;
|
|
||||||
if (last_buffer_size == 0)
|
|
||||||
last_buffer_size = buffer_size;
|
|
||||||
std::vector<u8> buffer(buffer_size);
|
std::vector<u8> buffer(buffer_size);
|
||||||
u32 num_buffers = (header.num_blocks + BUFFER_BLOCKS - 1) / BUFFER_BLOCKS;
|
u32 num_buffers = (header.num_blocks + BUFFER_BLOCKS - 1) / BUFFER_BLOCKS;
|
||||||
int progress_monitor = std::max<int>(1, num_buffers / 100);
|
int progress_monitor = std::max<int>(1, num_buffers / 100);
|
||||||
@ -391,8 +388,9 @@ bool DecompressBlobToFile(const std::string& infile_path, const std::string& out
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const size_t sz = i == num_buffers - 1 ? last_buffer_size : buffer_size;
|
const u64 inpos = i * buffer_size;
|
||||||
reader->Read(i * buffer_size, sz, buffer.data());
|
const u64 sz = std::min<u64>(buffer_size, header.data_size - inpos);
|
||||||
|
reader->Read(inpos, sz, buffer.data());
|
||||||
if (!outfile.WriteBytes(buffer.data(), sz))
|
if (!outfile.WriteBytes(buffer.data(), sz))
|
||||||
{
|
{
|
||||||
PanicAlertT("Failed to write the output file \"%s\".\n"
|
PanicAlertT("Failed to write the output file \"%s\".\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user