On 13/07/2017 00:06, Xueming Shen wrote:
:

My reading of the 1.2.11 changes suggests the root cause is that the internal state "deflate_state.high_water" is not being reset correctly/appropriately (to 0?)
in deflateReset/deflateResetKeep/lm_init().

AND the change of one of the conditions in deflate.c/deflateParams(), from "strm->total_in!=0" to "s->high_water" (in the "Flush last buffer" branch) as showed below, obvious triggers the regression from 1.2.8 to 1.2.11, in the scenario that the "strategy/levle is changed" AND a followup "reset()" is called (with the assumption that everything should be reset back to initial state and we start a new compression circle, with the new level and strategy. This is how it works
in 1.2.8 and early releases).
This is good sleuthing and I think you have identified the regression. The fix looks right although it would be good to get confirmation from the zlib maintainers (no comments on zlib/issues/275 so far).

As this is a P1 showstopper issue then additional eyes are welcome, esp. if we patch zlib rather than go back to an older version.

-Alan

Reply via email to