fix: filling union members that are not supposed to be written

* This causes some pointers to be partially overwritten when filling in the wrong order as well
This commit is contained in:
Jan Laupetin
2026-01-17 00:45:21 +00:00
parent 9f559fdcd0
commit 00546740e4
15 changed files with 72 additions and 69 deletions
@@ -596,7 +596,7 @@ namespace
{
const MemberComputations computations(&member);
if (computations.IsFirstUsedMember())
if (computations.IsFirstUsedMember(false))
{
if (member.m_condition)
{
@@ -614,7 +614,7 @@ namespace
PrintFillStruct_Member(structInfo, member, DeclarationModifierComputations(&member), 0u);
}
}
else if (computations.IsLastUsedMember())
else if (computations.IsLastUsedMember(false))
{
if (member.m_condition)
{
@@ -810,7 +810,7 @@ namespace
if (computations.ShouldIgnore())
continue;
if (computations.IsFirstUsedMember())
if (computations.IsFirstUsedMember(false))
{
LINE("")
if (member->m_condition)
@@ -829,7 +829,7 @@ namespace
PrintDynamicOversize_DynamicMember(info, *member);
}
}
else if (computations.IsLastUsedMember())
else if (computations.IsLastUsedMember(false))
{
if (member->m_condition)
{
@@ -1788,7 +1788,7 @@ namespace
{
const MemberComputations computations(member);
if (computations.IsFirstUsedMember())
if (computations.IsFirstUsedMember(false))
{
LINE("")
if (member->m_condition)
@@ -1807,7 +1807,7 @@ namespace
LoadMember_Reference(info, member, DeclarationModifierComputations(member));
}
}
else if (computations.IsLastUsedMember())
else if (computations.IsLastUsedMember(false))
{
if (member->m_condition)
{