in src/zlibWrapper.cpp [88:115]
int64_t decompress_memory(uint8_t *compressed_bytes,
const int64_t compressed_bytes_size, uint8_t* raw_memory,
const int64_t raw_memory_size_bytes) {
/* ZLib decompresses memory.
Args:
compressed_bytes : *to compressed memory
compressed_bytes_size : size of compressed memory,
raw_memory : memory to return uncompressed data into
raw_memory_size_bytes : size of raw_memory (bytes).
Returns:
Actual size in bytes of data uncompressed.
*/
if (compressed_bytes == NULL || compressed_bytes_size == 0) {
return 0;
}
z_stream zs; // z_stream is zlib's control structure
memset(&zs, 0, sizeof(zs));
inflateInit(&zs);
zs.next_in = reinterpret_cast<Bytef*>(compressed_bytes);
zs.avail_in = compressed_bytes_size;
zs.next_out = reinterpret_cast<Bytef*>(raw_memory);
zs.avail_out = raw_memory_size_bytes;
inflate(&zs, 0);
inflateEnd(&zs);
return zs.total_out;
}