# HG changeset patch # User rkennke # Date 1538408846 -7200 # Node ID 02421ca2cc85385dbe2591b91a7a9bbeccd0b228 # Parent 5bdf60cd0ed01c9d57111be3e72d6383fdd60d74 8211071: unpack.cpp fails to compile with statement has no effect [-Werror=unused-value] Reviewed-by: ihse, clanger diff -r 5bdf60cd0ed0 -r 02421ca2cc85 src/jdk.pack/share/native/common-unpack/unpack.cpp --- a/src/jdk.pack/share/native/common-unpack/unpack.cpp Mon Oct 01 16:41:10 2018 +0200 +++ b/src/jdk.pack/share/native/common-unpack/unpack.cpp Mon Oct 01 17:47:26 2018 +0200 @@ -70,6 +70,7 @@ #include "unpack.h" +#define STATIC_ASSERT(COND) typedef char static_assertion[(COND)?1:-1] // tags, in canonical order: static const byte TAGS_IN_ORDER[] = { @@ -564,14 +565,14 @@ FIRST_READ = MAGIC_BYTES + AH_LENGTH_MIN }; - assert(AH_LENGTH_MIN == 15); // # of UNSIGNED5 fields required after archive_magic + STATIC_ASSERT(AH_LENGTH_MIN == 15); // # of UNSIGNED5 fields required after archive_magic // An absolute minimum null archive is magic[4], {minver,majver,options}[3], // archive_size[0], cp_counts[8], class_counts[4], for a total of 19 bytes. // (Note that archive_size is optional; it may be 0..10 bytes in length.) // The first read must capture everything up through the options field. // This happens to work even if {minver,majver,options} is a pathological // 15 bytes long. Legal pack files limit those three fields to 1+1+2 bytes. - assert(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0 * B_MAX); + STATIC_ASSERT(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0 * B_MAX); // Up through archive_size, the largest possible archive header is // magic[4], {minver,majver,options}[4], archive_size[10]. @@ -581,7 +582,7 @@ // a byte, we probably will fail to allocate the buffer, since it // will be many gigabytes long. This is a practical, not an // architectural limit to Pack200 archive sizes. - assert(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0_MAX + 2*B_MAX); + STATIC_ASSERT(FIRST_READ >= MAGIC_BYTES + AH_LENGTH_0_MAX + 2*B_MAX); bool foreign_buf = (read_input_fn == null); byte initbuf[(int)FIRST_READ + (int)C_SLOP + 200]; // 200 is for JAR I/O