int64_t decompress_memory()

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;
}