From: Timo Sirainen Date: Fri, 28 Aug 2020 14:13:32 +0000 (+0300) Subject: lib-compression: ostreams - Add asserts to clarify how buffer flushing works X-Git-Tag: 2.3.13~260 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=154109921da276492f31fc055d7cbbb92b5f3903;p=thirdparty%2Fdovecot%2Fcore.git lib-compression: ostreams - Add asserts to clarify how buffer flushing works If the output buffer isn't fully sent, the flush function returns 0 early on, before setting flushed=TRUE. --- diff --git a/src/lib-compression/ostream-bzlib.c b/src/lib-compression/ostream-bzlib.c index 749999017a..eef9269b10 100644 --- a/src/lib-compression/ostream-bzlib.c +++ b/src/lib-compression/ostream-bzlib.c @@ -107,8 +107,10 @@ static int o_stream_bzlib_send_flush(struct bzlib_ostream *zstream, bool final) i_assert(zs->avail_in == 0); - if (zstream->flushed) + if (zstream->flushed) { + i_assert(zstream->outbuf_used == 0); return 1; + } if ((ret = o_stream_flush_parent_if_needed(&zstream->ostream)) <= 0) return ret; @@ -152,7 +154,8 @@ static int o_stream_bzlib_send_flush(struct bzlib_ostream *zstream, bool final) if (final) zstream->flushed = TRUE; - return zstream->outbuf_used == 0 ? 1 : 0; + i_assert(zstream->outbuf_used == 0); + return 1; } static int o_stream_bzlib_flush(struct ostream_private *stream) diff --git a/src/lib-compression/ostream-lzma.c b/src/lib-compression/ostream-lzma.c index b3e7b932a1..5571642258 100644 --- a/src/lib-compression/ostream-lzma.c +++ b/src/lib-compression/ostream-lzma.c @@ -111,8 +111,10 @@ static int o_stream_lzma_send_flush(struct lzma_ostream *zstream, bool final) i_assert(zs->avail_in == 0); - if (zstream->flushed) + if (zstream->flushed) { + i_assert(zstream->outbuf_used == 0); return 1; + } if ((ret = o_stream_flush_parent_if_needed(&zstream->ostream)) <= 0) return ret; @@ -153,7 +155,8 @@ static int o_stream_lzma_send_flush(struct lzma_ostream *zstream, bool final) if (final) zstream->flushed = TRUE; - return zstream->outbuf_used == 0 ? 1 : 0; + i_assert(zstream->outbuf_used == 0); + return 1; } static int o_stream_lzma_flush(struct ostream_private *stream) diff --git a/src/lib-compression/ostream-zlib.c b/src/lib-compression/ostream-zlib.c index 2b584ec183..f3bf432108 100644 --- a/src/lib-compression/ostream-zlib.c +++ b/src/lib-compression/ostream-zlib.c @@ -177,8 +177,10 @@ o_stream_zlib_send_flush(struct zlib_ostream *zstream, bool final) i_assert(zs->avail_in == 0); - if (zstream->flushed) + if (zstream->flushed) { + i_assert(zstream->outbuf_used == 0); return 1; + } if ((ret = o_stream_flush_parent_if_needed(&zstream->ostream)) <= 0) return ret; @@ -227,7 +229,8 @@ o_stream_zlib_send_flush(struct zlib_ostream *zstream, bool final) } if (final) zstream->flushed = TRUE; - return zstream->outbuf_used == 0 ? 1 : 0; + i_assert(zstream->outbuf_used == 0); + return 1; } static int o_stream_zlib_flush(struct ostream_private *stream) diff --git a/src/lib-compression/ostream-zstd.c b/src/lib-compression/ostream-zstd.c index 24dc1cccb1..bc3c5e2c43 100644 --- a/src/lib-compression/ostream-zstd.c +++ b/src/lib-compression/ostream-zstd.c @@ -107,8 +107,10 @@ static int o_stream_zstd_send_flush(struct zstd_ostream *zstream, bool final) { int ret; - if (zstream->flushed) + if (zstream->flushed) { + i_assert(zstream->output.pos == 0); return 1; + } if ((ret = o_stream_flush_parent_if_needed(&zstream->ostream)) <= 0) return ret; @@ -136,6 +138,7 @@ static int o_stream_zstd_send_flush(struct zstd_ostream *zstream, bool final) if (final) zstream->flushed = TRUE; + i_assert(zstream->output.pos == 0); return 1; }