From ad343892f318b312b3d9f931b9fbebc978ddae0c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 29 May 2018 19:00:41 +0200 Subject: [PATCH] - fixed: When deserializing the object list, the array must be nulled before using it so that a premature abort does not end up working on random data. --- src/serializer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/serializer.cpp b/src/serializer.cpp index aa1c9a49e..58d5658d4 100644 --- a/src/serializer.cpp +++ b/src/serializer.cpp @@ -989,6 +989,11 @@ void FSerializer::ReadObjects(bool hubtravel) { DThinker::bSerialOverride = true; r->mDObjects.Resize(ArraySize()); + for (auto &p : r->mDObjects) + { + p = nullptr; + } + // First iteration: create all the objects but do nothing with them yet. for (unsigned i = 0; i < r->mDObjects.Size(); i++) { @@ -1060,7 +1065,7 @@ void FSerializer::ReadObjects(bool hubtravel) // nuke all objects we created here. for (auto obj : r->mDObjects) { - if (!(obj->ObjectFlags & OF_EuthanizeMe)) obj->Destroy(); + if (obj != nullptr && !(obj->ObjectFlags & OF_EuthanizeMe)) obj->Destroy(); } r->mDObjects.Clear();