From efd6d2cf07ecd061a516491c53125028f6d36026 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 13 Dec 2022 14:38:32 +0100 Subject: [PATCH] - fix initialization issues with a few serializer functions. --- source/games/duke/src/savegame.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/source/games/duke/src/savegame.cpp b/source/games/duke/src/savegame.cpp index 085ef4d9b..63f9c4586 100644 --- a/source/games/duke/src/savegame.cpp +++ b/source/games/duke/src/savegame.cpp @@ -294,7 +294,11 @@ void DDukeActor::Serialize(FSerializer& arc) FSerializer& Serialize(FSerializer& arc, const char* keyname, Cycler& w, Cycler* def) { static Cycler nul; - if (!def) def = &nul; + if (!def) + { + def = &nul; + if (arc.isReading()) w = {}; + } if (arc.BeginObject(keyname)) { arc("sector", w.sector, def->sector) @@ -311,7 +315,11 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, Cycler& w, Cycler* FSerializer& Serialize(FSerializer& arc, const char* keyname, AmbientTags& w, AmbientTags* def) { static AmbientTags nul; - if (!def) def = &nul; + if (!def) + { + def = &nul; + if (arc.isReading()) w = {}; + } if (arc.BeginObject(keyname)) { arc("lotag", w.lo, def->lo) @@ -324,7 +332,11 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, AmbientTags& w, Am FSerializer& Serialize(FSerializer& arc, const char* keyname, animate& w, animate* def) { static animate nul; - if (!def) def = &nul; + if (!def) + { + def = &nul; + if (arc.isReading()) w = {}; + } if (arc.BeginObject(keyname)) { arc("sector", w.sect, def->sect)