diff options
author | Patric Stout <truebrain@openttd.org> | 2021-06-12 14:49:51 +0200 |
---|---|---|
committer | Patric Stout <github@truebrain.nl> | 2021-06-15 16:45:04 +0200 |
commit | 97b94bdc9ab4ceeb589c5022d5c238442faf0454 (patch) | |
tree | 7d22a32f5bf2ac2a56467b7ce5f190fff9c8d09a /src/script | |
parent | f67af5cbe5cb754c3b64553b9cc03b5c18ca7e79 (diff) | |
download | openttd-97b94bdc9ab4ceeb589c5022d5c238442faf0454.tar.xz |
Change: prefix SL_ARR with the length of the array
This means that during loading we can validate that what is saved
is also that what is expected. Additionally, this makes all list
types similar to how they are stored on disk:
First a gamma to indicate length, followed by the data.
The size still depends on the type.
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/script_instance.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 2d32b02e8..2665a8684 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -365,7 +365,7 @@ static const SaveLoad _script_byte[] = { sq_getinteger(vm, index, &res); if (!test) { int value = (int)res; - SlArray(&value, 1, SLE_INT32); + SlCopy(&value, 1, SLE_INT32); } return true; } @@ -385,7 +385,7 @@ static const SaveLoad _script_byte[] = { if (!test) { _script_sl_byte = (byte)len; SlObject(nullptr, _script_byte); - SlArray(const_cast<char *>(buf), len, SLE_CHAR); + SlCopy(const_cast<char *>(buf), len, SLE_CHAR); } return true; } @@ -565,7 +565,7 @@ bool ScriptInstance::IsPaused() switch (_script_sl_byte) { case SQSL_INT: { int value; - SlArray(&value, 1, SLE_INT32); + SlCopy(&value, 1, SLE_INT32); if (vm != nullptr) sq_pushinteger(vm, (SQInteger)value); return true; } @@ -573,7 +573,7 @@ bool ScriptInstance::IsPaused() case SQSL_STRING: { SlObject(nullptr, _script_byte); static char buf[std::numeric_limits<decltype(_script_sl_byte)>::max()]; - SlArray(buf, _script_sl_byte, SLE_CHAR); + SlCopy(buf, _script_sl_byte, SLE_CHAR); StrMakeValidInPlace(buf, buf + _script_sl_byte); if (vm != nullptr) sq_pushstring(vm, buf, -1); return true; |