diff --git a/lib_generic/zlib.c b/lib_generic/zlib.c index 3d5b5c0d6..1b6db3214 100644 --- a/lib_generic/zlib.c +++ b/lib_generic/zlib.c @@ -1040,6 +1040,8 @@ z_streamp strm; state->hold = 0; state->bits = 0; state->lencode = state->distcode = state->next = state->codes; + if (strm->outcb != Z_NULL) + (*strm->outcb)(Z_NULL, 0); Tracev((stderr, "inflate: reset\n")); return Z_OK; } @@ -1952,7 +1954,11 @@ z_streamp strm; if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) return Z_STREAM_ERROR; state = (struct inflate_state FAR *)strm->state; - if (state->window != Z_NULL) ZFREE(strm, state->window); + if (state->window != Z_NULL) { + if (strm->outcb != Z_NULL) + (*strm->outcb)(Z_NULL, 0); + ZFREE(strm, state->window); + } ZFREE(strm, strm->state); strm->state = Z_NULL; Tracev((stderr, "inflate: end\n"));