Core/MemoryStream: Fix assertion trigger when writing zero-sized block

This commit is contained in:
Lynix 2017-12-09 20:34:07 +01:00
parent 7772d56c66
commit 24278dafdc
1 changed files with 10 additions and 6 deletions

View File

@ -130,15 +130,19 @@ namespace Nz
std::size_t MemoryStream::WriteBlock(const void* buffer, std::size_t size) std::size_t MemoryStream::WriteBlock(const void* buffer, std::size_t size)
{ {
std::size_t endPos = static_cast<std::size_t>(m_pos + size); if (size > 0)
if (endPos > m_buffer->GetSize()) {
m_buffer->Resize(endPos); std::size_t endPos = static_cast<std::size_t>(m_pos + size);
if (endPos > m_buffer->GetSize())
m_buffer->Resize(endPos);
NazaraAssert(buffer, "Invalid buffer"); NazaraAssert(buffer, "Invalid buffer");
std::memcpy(m_buffer->GetBuffer() + m_pos, buffer, size); std::memcpy(m_buffer->GetBuffer() + m_pos, buffer, size);
m_pos = endPos;
}
m_pos = endPos;
return size; return size;
} }
} }