mirror of
https://github.com/openRuyi-Project/gcc.git
synced 2026-06-24 20:35:51 +00:00
natInflater.cc (inflate): Treat Z_BUF_ERROR as end-of-stream if avail_in is 0.
* java/util/zip/natInflater.cc (inflate): Treat Z_BUF_ERROR as
end-of-stream if avail_in is 0.
From-SVN: r38338
This commit is contained in:
committed by
Bryce McKinlay
parent
f2aca1970f
commit
dbb04e883d
@@ -106,6 +106,16 @@ java::util::zip::Inflater::inflate (jbyteArray buf, jint off, jint len)
|
||||
|
||||
switch (::inflate (s, Z_SYNC_FLUSH))
|
||||
{
|
||||
case Z_BUF_ERROR:
|
||||
/* Using the no_header option, zlib requires an extra padding byte at the
|
||||
end of the stream in order to successfully complete decompression (see
|
||||
zlib/contrib/minizip/unzip.c). We don't do this, so can end up with a
|
||||
Z_BUF_ERROR at the end of a stream when zlib has completed inflation
|
||||
and there's no more input. Thats not a problem. */
|
||||
if (s->avail_in != 0)
|
||||
throw new java::lang::InternalError;
|
||||
// Fall through.
|
||||
|
||||
case Z_STREAM_END:
|
||||
is_finished = true;
|
||||
if (s->avail_out == (unsigned int) len)
|
||||
@@ -125,11 +135,6 @@ java::util::zip::Inflater::inflate (jbyteArray buf, jint off, jint len)
|
||||
_Jv_Throw (new java::lang::OutOfMemoryError);
|
||||
break;
|
||||
|
||||
case Z_BUF_ERROR:
|
||||
// FIXME?
|
||||
_Jv_Throw (new java::lang::InternalError);
|
||||
break;
|
||||
|
||||
case Z_OK:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user