On Thu, 2 Feb 2023 08:27:55 GMT, Amit Kumar <d...@openjdk.org> wrote:
>> DeInflate.java test fails on s390x platform because size for out1 array >> which is responsible for storing the compressed data is insufficient. And >> being unable to write whole compressed data on array, on s390 whole data >> can't be recovered after compression. So this fix increase Array size (for >> s390). > > Amit Kumar has updated the pull request incrementally with one additional > commit since the last revision: > > change acc to Alan comments Alan, with these changes I've pasted the output below: diff --git a/test/jdk/java/util/zip/DeInflate.java b/test/jdk/java/util/zip/DeInflate.java index 9ad0aa5d250..eaf1fb2ba45 100644 --- a/test/jdk/java/util/zip/DeInflate.java +++ b/test/jdk/java/util/zip/DeInflate.java @@ -131,9 +131,14 @@ public class DeInflate { ByteArrayOutputStream baos = new ByteArrayOutputStream(len); while (!def.finished()) { - int temp_counter = def.deflate(out1); - m += temp_counter; - baos.write(out1, 0, temp_counter); + int remaining = out1.length - m; + int temp_value = def.deflate(out1, m, remaining); + System.out.println("compressed: " + temp_value); + System.out.println("is finished: " + def.finished()); +// if (remaining == 0) { +// throw new RuntimeException("out1 is small"); +// } + m += temp_value; } out1 = baos.toByteArray(); baos.reset(); @@ -142,9 +147,11 @@ public class DeInflate { int n = 0; while (!inf.finished()) { - int temp_counter = inf.inflate(out2); - n += temp_counter; - baos.write(out2, 0, temp_counter); + int remaining = out2.length - n; + if (remaining == 0) { + throw new RuntimeException("out2 is small"); + } + n += inf.inflate(out2, n, remaining); } I'm getting this output: level:-1, strategy: 0, dowrap: false compressed: 524454 is finished: true result: Failed. Execution failed: `main' threw exception: java.lang.ArrayIndexOutOfBoundsException: Range [524454, 524454 + 0) out of bounds for length 0 ------------- PR: https://git.openjdk.org/jdk/pull/12283