diff --git a/source/common/utility/tarray.h b/source/common/utility/tarray.h index ab30e0095..4f5467921 100644 --- a/source/common/utility/tarray.h +++ b/source/common/utility/tarray.h @@ -1703,6 +1703,11 @@ public: { memset(&bytes[0], 0, bytes.Size()); } + + TArray &Storage() + { + return bytes; + } }; diff --git a/source/games/sw/src/save.cpp b/source/games/sw/src/save.cpp index 09bc6c6d4..0b2b1b5be 100644 --- a/source/games/sw/src/save.cpp +++ b/source/games/sw/src/save.cpp @@ -819,24 +819,24 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, SECT_USER& w, SECT void SerializeSectUser(FSerializer& arc) { - FixedBitArray hitlist; + BitArray hitlist(numsectors); if (arc.isWriting()) { - for (int i = 0; i < MAXSECTORS; i++) + for (int i = 0; i < numsectors; i++) { hitlist.Set(i, !!SectUser[i].Data()); } } else { - for (int i = 0; i < MAXSECTORS; i++) + for (int i = 0; i < numsectors; i++) { SectUser[i].Clear(); } } - arc("sectusermap", hitlist); - arc.SparseArray("sectuser", SectUser, MAXSECTORS, hitlist); + arc.SerializeMemory("sectusermap", hitlist.Storage().Data(), hitlist.Storage().Size()); + arc.SparseArray("sectuser", SectUser, numsectors, hitlist); } //---------------------------------------------------------------------------