8068338: Better message about incompatible zlib in Deflater.init

Reviewed-by: alanb, sherman
This commit is contained in:
Ivan Gerasimov 2014-12-30 00:11:00 +03:00
parent cfcc0c431a
commit bd3205c63e

View File

@ -76,10 +76,11 @@ Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
JNU_ThrowOutOfMemoryError(env, 0);
return jlong_zero;
} else {
char *msg;
switch (deflateInit2(strm, level, Z_DEFLATED,
nowrap ? -MAX_WBITS : MAX_WBITS,
DEF_MEM_LEVEL, strategy)) {
const char *msg;
int ret = deflateInit2(strm, level, Z_DEFLATED,
nowrap ? -MAX_WBITS : MAX_WBITS,
DEF_MEM_LEVEL, strategy);
switch (ret) {
case Z_OK:
return ptr_to_jlong(strm);
case Z_MEM_ERROR:
@ -91,7 +92,11 @@ Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
JNU_ThrowIllegalArgumentException(env, 0);
return jlong_zero;
default:
msg = strm->msg;
msg = ((strm->msg != NULL) ? strm->msg :
(ret == Z_VERSION_ERROR) ?
"zlib returned Z_VERSION_ERROR: "
"compile time and runtime zlib implementations differ" :
"unknown error initializing zlib library");
free(strm);
JNU_ThrowInternalError(env, msg);
return jlong_zero;