# HG changeset patch # User mbaesken # Date 1582104454 -3600 # Wed Feb 19 10:27:34 2020 +0100 # Node ID 7f0663aedd0eb88855775e8a8b96abbf5c1b74d4 # Parent 83949f956490c5547fb894271d9933ab57708169 8239351: Give more meaningful InternalError messages in Deflater.c diff --git a/src/java.base/share/native/libzip/Deflater.c b/src/java.base/share/native/libzip/Deflater.c --- a/src/java.base/share/native/libzip/Deflater.c +++ b/src/java.base/share/native/libzip/Deflater.c @@ -1,5 +1,5 @@ /* - * 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 @@ -76,8 +76,15 @@ } } +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; @@ -85,7 +92,7 @@ JNU_ThrowIllegalArgumentException(env, 0); break; default: - JNU_ThrowInternalError(env, ((z_stream *)jlong_to_ptr(addr))->msg); + throwInternalErrorHelper(env, strm, "unknown error in checkSetDictionaryResult"); break; } } @@ -157,7 +164,7 @@ outputUsed = outputLen - strm->avail_out; break; default: - JNU_ThrowInternalError(env, strm->msg); + throwInternalErrorHelper(env, strm, "unknown error in checkDeflateStatus, setParams case"); return 0; } } else { @@ -171,7 +178,7 @@ outputUsed = outputLen - strm->avail_out; break; default: - JNU_ThrowInternalError(env, strm->msg); + throwInternalErrorHelper(env, strm, "unknown error in checkDeflateStatus"); return 0; } } @@ -289,7 +296,7 @@ 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"); } } @@ -297,7 +304,7 @@ 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)); }