diff --git a/Source/Core/DiscIO/WIABlob.cpp b/Source/Core/DiscIO/WIABlob.cpp index 92bab36d81..10c4f261ed 100644 --- a/Source/Core/DiscIO/WIABlob.cpp +++ b/Source/Core/DiscIO/WIABlob.cpp @@ -765,7 +765,14 @@ bool WIARVZFileReader::Chunk::Decompress() const size_t bytes_to_move = m_out.bytes_written - m_out_bytes_used_for_exceptions; DecompressionBuffer in{std::vector(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;