fix: doing wrong alignment on dynamic filling

This commit is contained in:
Jan
2025-06-04 18:08:23 +01:00
parent ee027502ca
commit 43be997a22
4 changed files with 44 additions and 7 deletions

View File

@ -9,6 +9,8 @@
#include <cassert>
#include <cstring>
#include <iostream>
#include <sstream>
#include <stack>
ZoneStreamFillReadAccessor::ZoneStreamFillReadAccessor(
@ -433,6 +435,25 @@ namespace
return *m_pointer_redirect_lookup[redirectIndex];
}
#ifdef DEBUG_OFFSETS
void DebugOffsets(const size_t assetIndex) const override
{
std::ostringstream ss;
ss << "Asset " << assetIndex;
for (const auto& block : m_blocks)
{
if (block->m_type != XBlockType::BLOCK_TYPE_NORMAL)
continue;
ss << " " << m_block_offsets[block->m_index];
}
ss << "\n";
std::cout << ss.str();
}
#endif
private:
void LoadDataFromBlock(const XBlock& block, void* dst, const size_t size)
{

View File

@ -11,6 +11,8 @@
#include <type_traits>
#include <vector>
#define DEBUG_OFFSETS 1
class ZoneStreamFillReadAccessor
{
public:
@ -170,6 +172,10 @@ public:
return static_cast<T*>(ConvertOffsetToAliasLookup(static_cast<const void*>(offset)));
}
#ifdef DEBUG_OFFSETS
virtual void DebugOffsets(size_t assetIndex) const = 0;
#endif
static std::unique_ptr<ZoneInputStream> Create(
unsigned pointerBitCount, unsigned blockBitCount, std::vector<XBlock*>& blocks, block_t insertBlock, ILoadingStream& stream, MemoryManager& memory);
};