]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Make MapBlockHeader u16
authorElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 1 Apr 2021 15:29:49 +0000 (17:29 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Thu, 1 Apr 2021 15:29:49 +0000 (17:29 +0200)
src/clientcommands.c
src/map.c
src/map.h

index 648505ad9df37fa535c82020212c96c4be513932..3965b51aae86ec5ea4c476e2be3cc1b3365975ea 100644 (file)
@@ -40,16 +40,16 @@ static bool block_handler(Client *client, bool good)
        if (! read_v3s32(client->fd, &pos))
                return false;
 
-       u64 size;
+       MapBlockHeader header;
 
-       if (! read_u64(client->fd, &size))
+       if (! read_u16(client->fd, &header))
                return false;
 
-       char data[size];
+       char data[header];
        size_t n_read_total = 0;
        int n_read;
-       while (n_read_total < size) {
-               if ((n_read = read(client->fd, data + n_read_total, size - n_read_total)) == -1) {
+       while (n_read_total < header) {
+               if ((n_read = read(client->fd, data + n_read_total, header - n_read_total)) == -1) {
                        perror("read");
                        return false;
                }
@@ -66,7 +66,7 @@ static bool block_handler(Client *client, bool good)
        if (block->state != MBS_CREATED)
                map_clear_meta(block);
 
-       bool ret = map_deserialize_block(block, data, size);
+       bool ret = map_deserialize_block(block, data, header);
 
        if (good)
                clientmap_block_changed(block);
index 8c009e11b517d3398be9ca2979a431a25f92231a..d8bf4ef375b52a223ad4df8ef33f1df6b67a62f0 100644 (file)
--- a/src/map.c
+++ b/src/map.c
@@ -192,8 +192,8 @@ void map_serialize_block(MapBlock *block, char **dataptr, size_t *sizeptr)
 
        size_t size = sizeof(MapBlockHeader) + sizeof(MapBlockHeader) + compressed_size;
        char *data = malloc(size);
-       *(MapBlockHeader *) data = htobe64(sizeof(MapBlockHeader) + compressed_size);
-       *(MapBlockHeader *) (data + sizeof(MapBlockHeader)) = htobe64(uncompressed_size);
+       *(MapBlockHeader *) data = htobe16(sizeof(MapBlockHeader) + compressed_size);
+       *(MapBlockHeader *) (data + sizeof(MapBlockHeader)) = htobe16(uncompressed_size);
        memcpy(data + sizeof(MapBlockHeader) + sizeof(MapBlockHeader), compressed_data, compressed_size);
 
        *sizeptr = size;
@@ -205,7 +205,7 @@ bool map_deserialize_block(MapBlock *block, const char *data, size_t size)
        if (size < sizeof(MapBlockHeader))
                return false;
 
-       MapBlockHeader uncompressed_size = be64toh(*(MapBlockHeader *) data);
+       MapBlockHeader uncompressed_size = be16toh(*(MapBlockHeader *) data);
 
        if (uncompressed_size < sizeof(MapBlockData))
                return false;
@@ -217,8 +217,8 @@ bool map_deserialize_block(MapBlock *block, const char *data, size_t size)
     stream.zfree = Z_NULL;
     stream.opaque = Z_NULL;
 
-       stream.avail_in = size - sizeof(u64);
-    stream.next_in = (Bytef *) (data + sizeof(u64));
+       stream.avail_in = size - sizeof(MapBlockHeader);
+    stream.next_in = (Bytef *) (data + sizeof(MapBlockHeader));
     stream.avail_out = uncompressed_size;
     stream.next_out = (Bytef *) decompressed_data;
 
index 44ccf90a1094bf08d774a406d77302a14e8a7e4d..e7045f60e20472a50d00830c0066af3c4dd7b58c 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -26,7 +26,7 @@ typedef enum
 
 typedef MapNode MapBlockData[16][16][16];
 
-typedef u64 MapBlockHeader;
+typedef u16 MapBlockHeader;
 
 typedef struct
 {