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.1.0-beta1~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6581fb0efcdd0ef2429105dc61e3923a16db703d;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 e57daab18..a7af88f2e 100644 --- a/infback.c +++ b/infback.c @@ -477,12 +477,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: @@ -494,8 +490,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;