summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2021-06-12 13:23:19 +0200
committerPatric Stout <github@truebrain.nl>2021-06-15 16:45:04 +0200
commit0d2e3437e3317a5bc7f9a806e76a89091d2cb6d3 (patch)
tree7cb3b36e1630ef8d33ec020a5d7a519b5dfb37ac
parent75e7451151ea9ab1ed18cd04b1229f68b7d3dcf5 (diff)
downloadopenttd-0d2e3437e3317a5bc7f9a806e76a89091d2cb6d3.tar.xz
Change: switch SL_DEQUE and SL_REFLIST length field to a gamma
The current SaveLoad is a bit inconsistent how long a length field is. Sometimes it is a 32bit, sometimes a gamma. Make it consistent across the board by making them all gammas.
-rw-r--r--src/saveload/saveload.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index 9f3aa7d1d..2d1e6fc78 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -1261,7 +1261,7 @@ public:
const SlStorageT *list = static_cast<const SlStorageT *>(storage);
- int type_size = SlCalcConvFileLen(SLE_FILE_U32); // Size of the length of the list.
+ int type_size = SlGetArrayLength(list->size());
int item_size = SlCalcConvFileLen(cmd == SL_VAR ? conv : (VarType)SLE_FILE_U32);
return list->size() * item_size + type_size;
}
@@ -1290,7 +1290,7 @@ public:
switch (_sl.action) {
case SLA_SAVE:
- SlWriteUint32((uint32)list->size());
+ SlWriteArrayLength(list->size());
for (auto &item : *list) {
SlSaveLoadMember(cmd, &item, conv);
@@ -1301,8 +1301,8 @@ public:
case SLA_LOAD: {
size_t length;
switch (cmd) {
- case SL_VAR: length = SlReadUint32(); break;
- case SL_REF: length = IsSavegameVersionBefore(SLV_69) ? SlReadUint16() : SlReadUint32(); break;
+ case SL_VAR: length = IsSavegameVersionBefore(SLV_SAVELOAD_LIST_LENGTH) ? SlReadUint32() : SlReadArrayLength(); break;
+ case SL_REF: length = IsSavegameVersionBefore(SLV_69) ? SlReadUint16() : IsSavegameVersionBefore(SLV_SAVELOAD_LIST_LENGTH) ? SlReadUint32() : SlReadArrayLength(); break;
default: NOT_REACHED();
}