mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 18:13:46 +01:00
Fix a crash (assert) when client set serial version < 24 in INIT command SER_FMT_VER_LOWEST is set to zero, then the test is stupid in INIT because all client works. In mapblock we check if client's serialization version is < 24, but if client sent serialization version < 24 (15 for example) the server set it and tried to send nodes, then BOOM
This commit is contained in:
parent
f8bd1f3563
commit
800d192702
@ -526,12 +526,6 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
|
|||||||
throw SerializationError("ERROR: Not writing dummy block.");
|
throw SerializationError("ERROR: Not writing dummy block.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can't do this anymore; we have 16-bit dynamically allocated node IDs
|
|
||||||
// in memory; conversion just won't work in this direction.
|
|
||||||
if(version < 24)
|
|
||||||
throw SerializationError("MapBlock::serialize: serialization to "
|
|
||||||
"version < 24 not possible");
|
|
||||||
|
|
||||||
// First byte
|
// First byte
|
||||||
u8 flags = 0;
|
u8 flags = 0;
|
||||||
if(is_underground)
|
if(is_underground)
|
||||||
|
@ -30,11 +30,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
For map data (blocks, nodes, sectors).
|
For map data (blocks, nodes, sectors).
|
||||||
|
|
||||||
NOTE: The goal is to increment this so that saved maps will be
|
NOTE: The goal is to increment this so that saved maps will be
|
||||||
loadable by any version. Other compatibility is not
|
loadable by any version. Other compatibility is not
|
||||||
maintained.
|
maintained.
|
||||||
|
|
||||||
0: original networked test with 1-byte nodes
|
0: original networked test with 1-byte nodes
|
||||||
1: update with 2-byte nodes
|
1: update with 2-byte nodes
|
||||||
2: lighting is transmitted in param
|
2: lighting is transmitted in param
|
||||||
@ -70,7 +70,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
// Saved on disk version
|
// Saved on disk version
|
||||||
#define SER_FMT_VER_HIGHEST_WRITE 25
|
#define SER_FMT_VER_HIGHEST_WRITE 25
|
||||||
// Lowest supported serialization version
|
// Lowest supported serialization version
|
||||||
#define SER_FMT_VER_LOWEST 0
|
#define SER_FMT_VER_LOWEST 24
|
||||||
|
|
||||||
inline bool ser_ver_supported(s32 v) {
|
inline bool ser_ver_supported(s32 v) {
|
||||||
return v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST_READ;
|
return v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST_READ;
|
||||||
|
Loading…
Reference in New Issue
Block a user