diff --git a/src/ZoneLoading/Zone/Stream/Impl/XBlockInputStream.cpp b/src/ZoneLoading/Zone/Stream/Impl/XBlockInputStream.cpp index 0f9af77d..735ae757 100644 --- a/src/ZoneLoading/Zone/Stream/Impl/XBlockInputStream.cpp +++ b/src/ZoneLoading/Zone/Stream/Impl/XBlockInputStream.cpp @@ -113,7 +113,7 @@ void XBlockInputStream::LoadDataInBlock(void* dst, const size_t size) throw OutOfBlockBoundsException(block); } - if(reinterpret_cast(dst) + size >= block->m_buffer + block->m_buffer_size) + if(reinterpret_cast(dst) + size > block->m_buffer + block->m_buffer_size) { throw BlockOverflowException(block); } @@ -158,14 +158,14 @@ void XBlockInputStream::LoadNullTerminated(void* dst) size_t offset = reinterpret_cast(dst) - block->m_buffer; do { - m_stream->Load(&byte, 1); - block->m_buffer[offset++] = byte; - - if(offset >= block->m_buffer_size) + if (offset >= block->m_buffer_size) { throw BlockOverflowException(block); } + m_stream->Load(&byte, 1); + block->m_buffer[offset++] = byte; + } while(byte != 0); m_block_offsets[block->m_index] = offset; @@ -177,7 +177,7 @@ void** XBlockInputStream::InsertPointer() Align(sizeof(void*)); - if(m_block_offsets[m_insert_block->m_index] + sizeof(void*) >= m_insert_block->m_buffer_size) + if(m_block_offsets[m_insert_block->m_index] + sizeof(void*) > m_insert_block->m_buffer_size) { throw BlockOverflowException(m_insert_block); }