diff --git a/src/common/objects/dobject.cpp b/src/common/objects/dobject.cpp index b9817a919..aaf7884bc 100644 --- a/src/common/objects/dobject.cpp +++ b/src/common/objects/dobject.cpp @@ -417,7 +417,7 @@ size_t DObject::PropagateMark() // //========================================================================== -void DObject::ClearNativePointerFields(const TArray& types) +void DObject::ClearNativePointerFields(const TArrayView& types) { auto cls = GetClass(); if (cls->VMType == nullptr) diff --git a/src/common/objects/dobject.h b/src/common/objects/dobject.h index 3b414bdd9..6aba45da3 100644 --- a/src/common/objects/dobject.h +++ b/src/common/objects/dobject.h @@ -246,7 +246,7 @@ public: inline int* IntArray(FName field); // Make sure native data is wiped correctly since it has no read barriers. - void ClearNativePointerFields(const TArray& types); + void ClearNativePointerFields(const TArrayView& types); // This is only needed for swapping out PlayerPawns and absolutely nothing else! virtual size_t PointerSubstitution (DObject *old, DObject *notOld, bool nullOnFail); diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 070de05e4..1c0b78bcf 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -300,9 +300,9 @@ void FLevelLocals::ClearLevelData(bool fullgc) // Make sure map data gets cleared appropriately so any leftover Objects aren't pointing // towards anything invalid. - TArray fieldTypes = { NAME_SectorPortal, NAME_LinePortal, NAME_Vertex, NAME_Side, NAME_Line, NAME_SecPlane, NAME_F3DFloor, NAME_Sector }; + FName fieldTypes[] = { NAME_SectorPortal, NAME_LinePortal, NAME_Vertex, NAME_Side, NAME_Line, NAME_SecPlane, NAME_F3DFloor, NAME_Sector }; for (DObject* probe = GC::Root; probe != nullptr; probe = probe->ObjNext) - probe->ClearNativePointerFields(fieldTypes); + probe->ClearNativePointerFields({ fieldTypes, std::size(fieldTypes) }); } interpolator.ClearInterpolations(); // [RH] Nothing to interpolate on a fresh level.