From 156d7aa5cd3e88a65caef91dbd9acd67d87d11c0 Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 28 Apr 2021 15:31:12 +0200 Subject: [PATCH] Make zone write add insert pointer even if reusable member does not have struct type --- .../Templates/ZoneWriteTemplate.cpp | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp index 9f4b3c3c..443faf40 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp @@ -381,9 +381,6 @@ class ZoneWriteTemplate::Internal final : BaseTemplate static bool WriteMember_ShouldMakeInsertReuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType) { - if (member->m_type == nullptr || !member->m_type->m_reusable_reference_exists) - return false; - if (writeType != MemberWriteType::ARRAY_POINTER && writeType != MemberWriteType::SINGLE_POINTER && writeType != MemberWriteType::POINTER_ARRAY) @@ -407,6 +404,12 @@ class ZoneWriteTemplate::Internal final : BaseTemplate return false; } + if (member->m_is_reusable) + return true; + + if (member->m_type == nullptr || !member->m_type->m_reusable_reference_exists) + return false; + return true; } @@ -424,7 +427,16 @@ class ZoneWriteTemplate::Internal final : BaseTemplate } else if (writeType == MemberWriteType::POINTER_ARRAY) { - LINE("m_stream->ReusableAddOffset("<ReusableAddOffset(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");") + } + else + { + LINE("m_stream->ReusableAddOffset(" << MakeMemberAccess(info, member, modifier) << ", " << modifier.GetArraySize() << ");") + } } else {