ZoneCodeGenerator: Fix XAssetList of T6 being loaded into block memory and therefore causing overflows

This commit is contained in:
Jan
2019-11-15 14:50:23 +01:00
parent b15ce90fbb
commit 765b0d9e32
4 changed files with 38 additions and 18 deletions

View File

@ -94,7 +94,12 @@ void* XBlockInputStream::Alloc(const int align)
return &block->m_buffer[m_block_offsets[block->m_index]];
}
void XBlockInputStream::LoadData(void* dst, const size_t size)
void XBlockInputStream::LoadDataRaw(void* dst, const size_t size)
{
m_stream->Load(dst, size);
}
void XBlockInputStream::LoadDataInBlock(void* dst, const size_t size)
{
assert(!m_block_stack.empty());
@ -118,6 +123,17 @@ void XBlockInputStream::LoadData(void* dst, const size_t size)
m_stream->Load(dst, size);
IncBlockPos(size);
}
void XBlockInputStream::IncBlockPos(const size_t size)
{
assert(!m_block_stack.empty());
if (m_block_stack.empty())
return;
XBlock* block = m_block_stack.top();
m_block_offsets[block->m_index] += size;
}

View File

@ -30,7 +30,9 @@ public:
void* Alloc(int align) override;
void LoadData(void* dst, size_t size) override;
void LoadDataRaw(void* dst, size_t size) override;
void LoadDataInBlock(void* dst, size_t size) override;
void IncBlockPos(size_t size) override;
void LoadNullTerminated(void* dst) override;
void** InsertPointer() override;