< 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

@@ -76,18 +76,21 @@
     }
 }
 
 static void checkSetDictionaryResult(JNIEnv *env, jlong addr, jint res)
 {
+    const char *msg = NULL;
     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);
+        msg = ((((z_stream *)jlong_to_ptr(addr))->msg != NULL) ? ((z_stream *)jlong_to_ptr(addr))->msg :
+              "unknown error in checkSetDictionaryResult");
+        JNU_ThrowInternalError(env, msg);
         break;
     }
 }
 
 JNIEXPORT void JNICALL

@@ -144,10 +147,11 @@
 {
     z_stream *strm = jlong_to_ptr(addr);
     jint inputUsed = 0, outputUsed = 0;
     int finished = 0;
     int setParams = params & 1;
+    const char* msg = NULL;
 
     if (setParams) {
         switch (res) {
         case Z_OK:
             setParams = 0;

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

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

@@ -287,18 +295,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 >