summaryrefslogtreecommitdiff
path: root/src/saveload
diff options
context:
space:
mode:
Diffstat (limited to 'src/saveload')
-rw-r--r--src/saveload/saveload.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index c325c1ee5..40f631e31 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -587,17 +587,17 @@ static inline uint SlGetArrayLength(size_t length)
static inline uint SlCalcConvMemLen(VarType conv)
{
static const byte conv_mem_size[] = {1, 1, 1, 2, 2, 4, 4, 8, 8, 0};
- byte length = GB(conv, 4, 4);
- switch (length << 4) {
+ switch (GetVarMemType(conv)) {
case SLE_VAR_STRB:
case SLE_VAR_STR:
case SLE_VAR_STRQ:
return SlReadArrayLength();
default:
- assert(length < lengthof(conv_mem_size));
- return conv_mem_size[length];
+ uint8 type = GetVarMemType(conv) >> 4;
+ assert(type < lengthof(conv_mem_size));
+ return conv_mem_size[type];
}
}
@@ -610,9 +610,10 @@ static inline uint SlCalcConvMemLen(VarType conv)
static inline byte SlCalcConvFileLen(VarType conv)
{
static const byte conv_file_size[] = {1, 1, 2, 2, 4, 4, 8, 8, 2};
- byte length = GB(conv, 0, 4);
- assert(length < lengthof(conv_file_size));
- return conv_file_size[length];
+
+ uint8 type = GetVarFileType(conv);
+ assert(type < lengthof(conv_file_size));
+ return conv_file_size[type];
}
/** Return the size in bytes of a reference (pointer) */