diff --git a/src/serializer.cpp b/src/serializer.cpp index aa1c9a49e8..58d5658d48 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();