< prev index next >

src/java.base/share/native/libzip/Deflater.c

Print this page
rev 58083 : 8239351: Give more meaningful InternalError messages in Deflater.c

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -74,20 +74,27 @@
             return jlong_zero;
         }
     }
 }
 
+static void throwInternalErrorHelper(JNIEnv *env, z_stream *strm, const char *fixmsg) {
+    const char *msg = NULL;
+    msg = (strm->msg != NULL) ? strm->msg : fixmsg;
+    JNU_ThrowInternalError(env, msg);
+}
+
 static void checkSetDictionaryResult(JNIEnv *env, jlong addr, jint res)
 {
+    z_stream *strm = (z_stream *) jlong_to_ptr(addr);
     switch (res) {
     case Z_OK:
         break;
     case Z_STREAM_ERROR:
         JNU_ThrowIllegalArgumentException(env, 0);
         break;
     default:
-        JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg);
+        throwInternalErrorHelper(env, strm, "unknown error in checkSetDictionaryResult");
         break;
     }
 }
 
 JNIEXPORT void JNICALL

@@ -155,11 +162,11 @@
         case Z_BUF_ERROR:
             inputUsed = inputLen - strm->avail_in;
             outputUsed = outputLen - strm->avail_out;
             break;
         default:
-            JNU_ThrowInternalError(env, strm->msg);
+            throwInternalErrorHelper(env, strm, "unknown error in checkDeflateStatus, setParams case");
             return 0;
         }
     } else {
         switch (res) {
         case Z_STREAM_END:

@@ -169,11 +176,11 @@
         case Z_BUF_ERROR:
             inputUsed = inputLen - strm->avail_in;
             outputUsed = outputLen - strm->avail_out;
             break;
         default:
-            JNU_ThrowInternalError(env, strm->msg);
+            throwInternalErrorHelper(env, strm, "unknown error in checkDeflateStatus");
             return 0;
         }
     }
     return ((jlong)inputUsed) | (((jlong)outputUsed) << 31) | (((jlong)finished) << 62) | (((jlong)setParams) << 63);
 }

@@ -287,18 +294,18 @@
 
 JNIEXPORT void JNICALL
 Java_java_util_zip_Deflater_reset(JNIEnv *env, jclass cls, jlong addr)
 {
     if (deflateReset((z_stream *)jlong_to_ptr(addr)) != Z_OK) {
-        JNU_ThrowInternalError(env, 0);
+        JNU_ThrowInternalError(env, "deflateReset failed");
     }
 }
 
 JNIEXPORT void JNICALL
 Java_java_util_zip_Deflater_end(JNIEnv *env, jclass cls, jlong addr)
 {
     if (deflateEnd((z_stream *)jlong_to_ptr(addr)) == Z_STREAM_ERROR) {
-        JNU_ThrowInternalError(env, 0);
+        JNU_ThrowInternalError(env, "deflateEnd failed");
     } else {
         free((z_stream *)jlong_to_ptr(addr));
     }
 }
< prev index next >