35 unsigned char *&out,
unsigned int &outLength)
37 int bufferSize = 256 * 1024;
41 out = (
unsigned char*) malloc(bufferSize);
47 strm.avail_in = inLength;
49 strm.avail_out = bufferSize;
51 ret = inflateInit2(&strm, 15 + 32);
58 if (strm.next_out ==
nullptr)
64 ret = inflate(&strm, Z_NO_FLUSH);
65 assert(ret != Z_STREAM_ERROR);
73 (void) inflateEnd(&strm);
77 if (ret != Z_STREAM_END)
79 out = (
unsigned char*) realloc(out, bufferSize * 2);
87 strm.next_out = out + bufferSize;
88 strm.avail_out = bufferSize;
92 while (ret != Z_STREAM_END);
93 assert(strm.avail_in == 0);
95 outLength = bufferSize - strm.avail_out;
96 (void) inflateEnd(&strm);
97 return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
int inflateMemory(unsigned char *in, unsigned int inLength, unsigned char *&out, unsigned int &outLength)
Inflates either zlib or gzip deflated memory.