Merge branch 'master' into jgrpp

# Conflicts:
#	CMakeLists.txt
#	src/bootstrap_gui.cpp
This commit is contained in:
Jonathan G Rennison
2020-12-07 17:56:44 +00:00
19 changed files with 94 additions and 34 deletions

View File

@@ -1038,7 +1038,18 @@ static inline bool IsNumericType(VarType conv)
*/
static inline void *GetVariableAddress(const void *object, const SaveLoad *sld)
{
return const_cast<byte *>((const byte*)(sld->global ? nullptr : object) + (ptrdiff_t)sld->address);
/* Entry is a global address. */
if (sld->global) return sld->address;
/* Entry is a null-variable, mostly used to read old savegames etc. */
if (GetVarMemType(sld->conv) == SLE_VAR_NULL) {
assert(sld->address == nullptr);
return nullptr;
}
/* Everything else should be a non-null pointer. */
assert(object != nullptr);
return const_cast<byte *>((const byte *)object + (ptrdiff_t)sld->address);
}
int64 ReadValue(const void *ptr, VarType conv);