Commit be8b59db authored by Timo Teräs's avatar Timo Teräs

gzip: fix finalization of compressed output

the unflushed data when closing file can be several thousand kiloes,
loop until all is written out.
parent 89d1abe4
......@@ -177,12 +177,15 @@ static void gzo_close(void *stream)
struct apk_gzip_ostream *gos = (struct apk_gzip_ostream *) stream;
unsigned char buffer[1024];
size_t have;
int r;
gos->zs.avail_out = sizeof(buffer);
gos->zs.next_out = buffer;
deflate(&gos->zs, Z_FINISH);
have = sizeof(buffer) - gos->zs.avail_out;
gos->output->write(gos->output, buffer, have);
do {
gos->zs.avail_out = sizeof(buffer);
gos->zs.next_out = buffer;
r = deflate(&gos->zs, Z_FINISH);
have = sizeof(buffer) - gos->zs.avail_out;
gos->output->write(gos->output, buffer, have);
} while (r == Z_OK);
gos->output->close(gos->output);
deflateEnd(&gos->zs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment