diff options
author | Mark Adler <fork@madler.net> | 2022-07-24 11:41:07 -0700 |
---|---|---|
committer | Hans Kristian Rosbach <hk-github@circlestorm.org> | 2023-03-17 21:27:56 +0100 |
commit | 76be28a84f1eb11521eb4f0dee992987457512ea (patch) | |
tree | cb3dc64ce8ac3e3b0b5202f3fa777e11985906a9 | |
parent | ba7b6788a543b02eb6924175dced964c28b1bf7f (diff) |
Have infback() deliver all of the available output up to any error.
-rw-r--r-- | infback.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -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; |