2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-06-02 06:27:42 +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});", LINEF("fillAccessor.FillPtr({0}, {1});",
MakeMemberAccess(&structInfo, &memberInfo, modifier), MakeMemberAccess(&structInfo, &memberInfo, modifier),
OffsetForMemberModifier(memberInfo, modifier, nestedBaseOffset)) 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()) else if (modifier.IsPointerArray())
{ {
@ -1492,7 +1499,7 @@ namespace
} }
m_intendation--; m_intendation--;
} }
else else if (!m_env.m_architecture_mismatch)
{ {
LINE("assert(atStreamStart);") LINE("assert(atStreamStart);")
} }

View File

@ -403,10 +403,10 @@ namespace
if (lookupEntry == 0) if (lookupEntry == 0)
return nullptr; return nullptr;
if (lookupEntry > m_alias_lookup.size()) if (lookupEntry > m_pointer_redirect_lookup.size())
throw InvalidAliasLookupException(lookupEntry - 1, m_alias_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: private:

View File

@ -8,6 +8,7 @@
#include <cassert> #include <cassert>
#include <cstring> #include <cstring>
#include <memory> #include <memory>
#include <type_traits>
#include <vector> #include <vector>
class ZoneStreamFillReadAccessor class ZoneStreamFillReadAccessor
@ -148,7 +149,7 @@ public:
template<typename T> uintptr_t AllocRedirectEntry(T*& offset) 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; virtual void* ConvertOffsetToPointerRedirect(const void* offset) = 0;