Merge pull request #13038 from Ferdi265/fix-rvz-clang-ub
RVZ: Fix undefined behaviour when copying 0 bytes to a null pointer
This commit is contained in:
commit
8b7268ddef
|
@ -765,7 +765,14 @@ bool WIARVZFileReader<RVZ>::Chunk::Decompress()
|
||||||
const size_t bytes_to_move = m_out.bytes_written - m_out_bytes_used_for_exceptions;
|
const size_t bytes_to_move = m_out.bytes_written - m_out_bytes_used_for_exceptions;
|
||||||
|
|
||||||
DecompressionBuffer in{std::vector<u8>(bytes_to_move), bytes_to_move};
|
DecompressionBuffer in{std::vector<u8>(bytes_to_move), bytes_to_move};
|
||||||
std::memcpy(in.data.data(), m_out.data.data() + m_out_bytes_used_for_exceptions, bytes_to_move);
|
|
||||||
|
// Copying to a null pointer is undefined behaviour, so only copy when we
|
||||||
|
// actually have data to copy.
|
||||||
|
if (bytes_to_move > 0)
|
||||||
|
{
|
||||||
|
std::memcpy(in.data.data(), m_out.data.data() + m_out_bytes_used_for_exceptions,
|
||||||
|
bytes_to_move);
|
||||||
|
}
|
||||||
|
|
||||||
m_out.bytes_written = m_out_bytes_used_for_exceptions;
|
m_out.bytes_written = m_out_bytes_used_for_exceptions;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue