From c27504a322ad3dcc1ff483b416df265148486710 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Wed, 26 Jul 2017 23:37:44 +0200 Subject: compressZlib: don't use a SharedBuffer but a raw u8 * pointer Remove usage of the SharedBuffer in zlib compression which has two problems: * We copied the whole memory block to compress it (not good with mapblocks) * We copied sometimes strings to SharedBuffer to SharedBuffer (2nd time) Use this method in MapNode::serializeBulk + optimize serialization but merging 3 identical loops in a single loop --- src/mapnode.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'src/mapnode.cpp') diff --git a/src/mapnode.cpp b/src/mapnode.cpp index d835daba2..fd28910ff 100644 --- a/src/mapnode.cpp +++ b/src/mapnode.cpp @@ -658,7 +658,7 @@ void MapNode::serializeBulk(std::ostream &os, int version, const MapNode *nodes, u32 nodecount, u8 content_width, u8 params_width, bool compressed) { - if(!ser_ver_supported(version)) + if (!ser_ver_supported(version)) throw VersionMismatchException("ERROR: MapNode format not supported"); sanity_check(content_width == 2); @@ -666,38 +666,33 @@ void MapNode::serializeBulk(std::ostream &os, int version, // 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) + if (version < 24) throw SerializationError("MapNode::serializeBulk: serialization to " "version < 24 not possible"); - SharedBuffer databuf(nodecount * (content_width + params_width)); - - // Serialize content - for(u32 i=0; i