2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-05-30 13:07:41 +00:00

chore: temporarly adjust pointer insertion

This commit is contained in:
Jan 2025-05-29 09:51:07 +01:00
parent 6aa548d226
commit 995e5fbdf6
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
3 changed files with 13 additions and 5 deletions

View File

@ -532,6 +532,13 @@ namespace
LINEF("fillAccessor.FillPtr({0}, {1});",
MakeMemberAccess(&structInfo, &memberInfo, modifier),
OffsetForMemberModifier(memberInfo, modifier, nestedBaseOffset))
if (memberInfo.m_is_reusable)
{
LINEF("fillAccessor.InsertPointerRedirect(m_stream.AllocRedirectEntry({0}), {1});",
MakeMemberAccess(&structInfo, &memberInfo, modifier),
OffsetForMemberModifier(memberInfo, modifier, nestedBaseOffset))
}
}
else if (modifier.IsPointerArray())
{
@ -1492,7 +1499,7 @@ namespace
}
m_intendation--;
}
else
else if (!m_env.m_architecture_mismatch)
{
LINE("assert(atStreamStart);")
}

View File

@ -403,10 +403,10 @@ namespace
if (lookupEntry == 0)
return nullptr;
if (lookupEntry > m_alias_lookup.size())
throw InvalidAliasLookupException(lookupEntry - 1, m_alias_lookup.size());
if (lookupEntry > m_pointer_redirect_lookup.size())
throw InvalidAliasLookupException(lookupEntry - 1, m_pointer_redirect_lookup.size());
return m_alias_lookup[lookupEntry - 1];
return *m_pointer_redirect_lookup[lookupEntry - 1];
}
private:

View File

@ -8,6 +8,7 @@
#include <cassert>
#include <cstring>
#include <memory>
#include <type_traits>
#include <vector>
class ZoneStreamFillReadAccessor
@ -148,7 +149,7 @@ public:
template<typename T> uintptr_t AllocRedirectEntry(T*& offset)
{
return AllocRedirectEntry(reinterpret_cast<void**>(&offset));
return AllocRedirectEntry(reinterpret_cast<void**>(const_cast<std::remove_const_t<T>**>(&offset)));
}
virtual void* ConvertOffsetToPointerRedirect(const void* offset) = 0;