diff --git a/src/lib-compression/ostream-zlib.c b/src/lib-compression/ostream-zlib.c index 2851762de6..b2b3bde338 100644 --- a/src/lib-compression/ostream-zlib.c +++ b/src/lib-compression/ostream-zlib.c @@ -32,7 +32,8 @@ static void o_stream_zlib_close(struct iostream_private *stream, { struct zlib_ostream *zstream = (struct zlib_ostream *)stream; - (void)o_stream_flush(&zstream->ostream.ostream); + i_assert(zstream->ostream.finished || + zstream->ostream.ostream.stream_errno != 0); (void)deflateEnd(&zstream->zs); if (close_parent) o_stream_close(zstream->ostream.parent); @@ -230,7 +231,7 @@ static int o_stream_zlib_flush(struct ostream_private *stream) struct zlib_ostream *zstream = (struct zlib_ostream *)stream; int ret; - if (o_stream_zlib_send_flush(zstream, TRUE) < 0) + if (o_stream_zlib_send_flush(zstream, stream->finished) < 0) return -1; ret = o_stream_flush(stream->parent); diff --git a/src/lib-compression/test-compression.c b/src/lib-compression/test-compression.c index ff1658c7bf..5dbe6db94f 100644 --- a/src/lib-compression/test-compression.c +++ b/src/lib-compression/test-compression.c @@ -62,6 +62,7 @@ static void test_compression_handler(const struct compression_handler *handler) test_assert(o_stream_send(output, buf, sizeof(buf)) == sizeof(buf)); } + test_assert(o_stream_finish(output) > 0); o_stream_destroy(&output); o_stream_destroy(&file_output); sha1_result(&sha1, output_sha1);