
At 03:58 PM 10/22/2004 -0400, Dan Malek wrote:
On Oct 22, 2004, at 3:22 PM, Nick Barendt wrote:
.... So, I propose a patch ...
Let's see it :-)
I've made all of the mods, but I won't have time to get a patch together (crossing my t's, dotting my i's, CHANGELOG entry, etc.) today, and I'm out of the office next week. I'll get the patch together and mail it out when I get back.
.... and makes zlib return an error if the output buffer fills up so these types of errors are painfully obvious.
It may already return some error status if we choose to test it.
Nope, no error is returned. inflate_flush() in zlib.c just silently truncates the output:
local int inflate_flush(s, z, r) inflate_blocks_statef *s; z_stream *z; int r; {
SNIP
/* compute number of bytes to copy as far as end of window */ n = (uInt)((q <= s->write ? s->write : s->end) - q); if (n > z->avail_out) n = z->avail_out; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SNIP
The bzip2 code actually returns a specific error for this, BZ_OUTPUT_BUFF_FULL. I've modified zlib to behave similarly.
-- Dan