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;
}
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);
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;
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;
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;
typedef MapNode MapBlockData[16][16][16];
-typedef u64 MapBlockHeader;
+typedef u16 MapBlockHeader;
typedef struct
{