src/share/native/com/sun/java/util/jar/pack/zip.cpp
Print this page
*** 449,460 ****
zs.avail_out = readlen;
if (zs.avail_in == 0) {
zs.avail_in = (int) read_gzin_fn(u, inbuf, 1, inbuflen);
zs.next_in = (uchar*) inbuf;
}
! int error = inflate(&zs, Z_NO_FLUSH);
! if (error != Z_OK && error != Z_STREAM_END) {
u->abort("error inflating input");
break;
}
int nr = readlen - zs.avail_out;
numread += nr;
--- 449,463 ----
zs.avail_out = readlen;
if (zs.avail_in == 0) {
zs.avail_in = (int) read_gzin_fn(u, inbuf, 1, inbuflen);
zs.next_in = (uchar*) inbuf;
}
! // When flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it
! // will return Z_BUF_ERROR if it has not reached the end of the stream.
! // So, the only normal return codes are Z_BUF_ERROR and Z_STREAM_END.
! int error = inflate(&zs, Z_FINISH);
! if (error != Z_BUF_ERROR && error != Z_STREAM_END) {
u->abort("error inflating input");
break;
}
int nr = readlen - zs.avail_out;
numread += nr;