From 4aafbac1130cd4f4a03d458464cbb9308e2e8e0f Mon Sep 17 00:00:00 2001 From: Jan Date: Wed, 9 Sep 2020 16:12:20 +0200 Subject: [PATCH] Fix ZoneCode array loading overwriting pointers when an array is loaded while inside of an array of the same type --- .../Generating/Templates/Loading/ArrayPointer.stg | 4 +++- src/ZoneCodeGenerator/Generating/Templates/ZoneLoad.stg | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ZoneCodeGenerator/Generating/Templates/Loading/ArrayPointer.stg b/src/ZoneCodeGenerator/Generating/Templates/Loading/ArrayPointer.stg index 2237183d..b77ecf33 100644 --- a/src/ZoneCodeGenerator/Generating/Templates/Loading/ArrayPointer.stg +++ b/src/ZoneCodeGenerator/Generating/Templates/Loading/ArrayPointer.stg @@ -153,11 +153,13 @@ void $LoaderClassName(context.Asset)$::LoadPtrArray_$SafeTypeName(type)$(const b if(atStreamStart) m_stream->Load<$type.FullName$*>($TypePtrVarName(type)$, count); + $type.FullName$** var = $TypePtrVarName(type)$; for(size_t index = 0; index < count; index++) { + $TypePtrVarName(type)$ = var; $LoadPointerArrayMethod_PointerCheck(context, type, structure, reusable)$ - $TypePtrVarName(type)$++; + var++; } } >> \ No newline at end of file diff --git a/src/ZoneCodeGenerator/Generating/Templates/ZoneLoad.stg b/src/ZoneCodeGenerator/Generating/Templates/ZoneLoad.stg index 805b8421..c55ae98f 100644 --- a/src/ZoneCodeGenerator/Generating/Templates/ZoneLoad.stg +++ b/src/ZoneCodeGenerator/Generating/Templates/ZoneLoad.stg @@ -236,13 +236,16 @@ void $LoaderClassName(context.Asset)$::LoadArray_$type.Name$(const bool atStream if(atStreamStart) m_stream->Load<$type.FullName$>($TypeVarName(type)$, count); + $type.FullName$* var = $TypeVarName(type)$; for(size_t index = 0; index < count; index++) { $if(!type.Members)$ - $TypeVarName(structure.Type)$ = $TypeVarName(type)$; + $TypeVarName(structure.Type)$ = var; + $else$ + $TypeVarName(type)$ = var; $endif$ Load_$structure.Type.Name$(false); - $TypeVarName(type)$++; + var++; } } >>