From: Mark Adler Date: Wed, 14 Dec 2011 06:25:59 +0000 (-0800) Subject: Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF. X-Git-Tag: v1.2.5.2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=850a198ff1879e506c961c91da30009539ed14b3;p=thirdparty%2Fzlib-ng.git Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF. Z_BUF_ERROR was also being used for an unsuccessful gzungetc and for buffer lengths that didn't fit in an int. Those uses were changed to Z_DATA_ERROR in order to assure that Z_BUF_ERROR occurs only when a premature end of input occurs, indicating that gzclearerr() can be used. --- diff --git a/gzread.c b/gzread.c index 1e97e38d7..4bbbf52e4 100644 --- a/gzread.c +++ b/gzread.c @@ -302,7 +302,7 @@ int ZEXPORT gzread(file, buf, len) /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids the flaw in the interface) */ if ((int)len < 0) { - gz_error(state, Z_BUF_ERROR, "requested length does not fit in int"); + gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); return -1; } @@ -445,7 +445,7 @@ int ZEXPORT gzungetc(c, file) /* if no room, give up (must have already done a gzungetc()) */ if (state->x.have == (state->size << 1)) { - gz_error(state, Z_BUF_ERROR, "out of room to push characters"); + gz_error(state, Z_DATA_ERROR, "out of room to push characters"); return -1; } diff --git a/gzwrite.c b/gzwrite.c index 2dcb3fce6..18ade4ada 100644 --- a/gzwrite.c +++ b/gzwrite.c @@ -185,7 +185,7 @@ int ZEXPORT gzwrite(file, buf, len) /* since an int is returned, make sure len fits in one, otherwise return with an error (this avoids the flaw in the interface) */ if ((int)len < 0) { - gz_error(state, Z_BUF_ERROR, "requested length does not fit in int"); + gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); return 0; }