diff options
-rw-r--r-- | ext/zlib/zlib.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index 73efe8e01b..24f226843f 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -692,6 +692,11 @@ zstream_run(z, src, len, flush) break; } if (err != Z_OK) { + if (flush != Z_FINISH && err == Z_BUF_ERROR + && z->stream.avail_out > 0) { + z->flags |= ZSTREAM_FLAG_IN_STREAM; + break; + } zstream_reset_input(z); if (z->stream.avail_in > 0) { zstream_append_input(z, z->stream.next_in, z->stream.avail_in); |