From: Mark Adler Date: Sun, 24 Jul 2022 18:41:07 +0000 (-0700) Subject: Have infback() deliver all of the available output up to any error. X-Git-Tag: 2.0.7~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=76be28a84f1eb11521eb4f0dee992987457512ea;p=thirdparty%2Fzlib-ng.git Have infback() deliver all of the available output up to any error. --- diff --git a/infback.c b/infback.c index 81cd09b2..fedfa536 100644 --- a/infback.c +++ b/infback.c @@ -465,12 +465,8 @@ int32_t Z_EXPORT PREFIX(inflateBack)(PREFIX3(stream) *strm, in_func in, void *in break; case DONE: - /* inflate stream terminated properly -- write leftover output */ + /* inflate stream terminated properly */ ret = Z_STREAM_END; - if (left < state->wsize) { - if (out(out_desc, state->window, state->wsize - left)) - ret = Z_BUF_ERROR; - } goto inf_leave; case BAD: @@ -482,8 +478,13 @@ int32_t Z_EXPORT PREFIX(inflateBack)(PREFIX3(stream) *strm, in_func in, void *in goto inf_leave; } - /* Return unused input */ + /* Write leftover output and return unused input */ inf_leave: + if (left < state->wsize) { + if (out(out_desc, state->window, state->wsize - left) && (ret == Z_STREAM_END)) { + ret = Z_BUF_ERROR; + } + } strm->next_in = next; strm->avail_in = have; return ret;