Revert "Fix a crash (assert) when client set serial version < 24 in INIT command...
authorCraig Robbins <kde.psych@gmail.com>
Mon, 26 Jan 2015 14:39:33 +0000 (00:39 +1000)
committerCraig Robbins <kde.psych@gmail.com>
Mon, 26 Jan 2015 14:39:33 +0000 (00:39 +1000)
nerzhul is (may?) be working on a new solution. For the moment this is reverted because old worlds cannot be loaded (see discussion on github for the commit).

This reverts commit 800d19270250bb13cc6b2d330199815bf8e96446.

src/mapblock.cpp
src/serialization.h

index c22096562e81681ff4928069c53b20390c1bd2d7..4cc0abc8176104c5a5a922205d6067de223e7df2 100644 (file)
@@ -526,6 +526,12 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
                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
        u8 flags = 0;
        if(is_underground)
index 6bc4cdc53b3d6538a07c2577ae980ffc84c7517e..caa1a66da058b0483ccd6fb19a1175f94309e194 100644 (file)
@@ -30,11 +30,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        --------------------------------
 
        For map data (blocks, nodes, sectors).
-
+       
        NOTE: The goal is to increment this so that saved maps will be
              loadable by any version. Other compatibility is not
                  maintained.
-
+                 
        0: original networked test with 1-byte nodes
        1: update with 2-byte nodes
        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
 #define SER_FMT_VER_HIGHEST_WRITE 25
 // Lowest supported serialization version
-#define SER_FMT_VER_LOWEST 24
+#define SER_FMT_VER_LOWEST 0
 
 inline bool ser_ver_supported(s32 v) {
        return v >= SER_FMT_VER_LOWEST && v <= SER_FMT_VER_HIGHEST_READ;