For the truly desperate in search of a spam folder, recent emails from google.com can be viewed here: https://openjdk.markmail.org/search/?q=from%3Agoogle.com%20date%3A2020-
On Mon, Mar 2, 2020 at 11:15 PM Langer, Christoph <christoph.lan...@sap.com> wrote: > Hi Volker, > > sure, looks good. Unfortunately I don't get the mails from Martin ☹ > > Cheers > Christoph > > > -----Original Message----- > > From: Volker Simonis <volker.simo...@gmail.com> > > Sent: Montag, 2. März 2020 16:17 > > To: Langer, Christoph <christoph.lan...@sap.com> > > Cc: Java Core Libs <core-libs-dev@openjdk.java.net> > > Subject: Re: RFR(s): 8240235: jdk.test.lib.util.JarUtils updates jar > files > > incorrectly > > > > Hi Christoph, > > > > thanks for looking at my change. I've slightly improved the > > implementation as suggested by Martin to preserve all the zip > > attributes which can be preserved. Still fine for you? > > > > http://cr.openjdk.java.net/~simonis/webrevs/2020/8240235.01 > > > > On Sun, Mar 1, 2020 at 9:21 PM Langer, Christoph > > <christoph.lan...@sap.com> wrote: > > > > > > Hi Volker, > > > > > > this looks good to me. > > > > > > Best regards > > > Christoph > > > > > > > -----Original Message----- > > > > From: core-libs-dev <core-libs-dev-boun...@openjdk.java.net> On > > Behalf > > > > Of Volker Simonis > > > > Sent: Freitag, 28. Februar 2020 19:48 > > > > To: Java Core Libs <core-libs-dev@openjdk.java.net> > > > > Subject: RFR(s): 8240235: jdk.test.lib.util.JarUtils updates jar > files > > incorrectly > > > > > > > > Hi, > > > > > > > > can I please have a review for this small test fix: > > > > > > > > http://cr.openjdk.java.net/~simonis/webrevs/2020/8240235/ > > > > https://bugs.openjdk.java.net/browse/JDK-8240235 > > > > > > > > JarUtils.updateJar() and JarUtils.updateJarFile() update jar files by > > > > reading JarEntry-s from a source jar file and writing these exact > > > > JarEntry-s to the destination jar file followed be the inflated and > > > > re-deflated data belonging to this entry. > > > > > > > > This approach is not correct, because JarEntry contains both, the > > > > compressed and uncompressed size of the corresponding entry. But the > > > > original Defalter which initially compressed that entry can be either > > > > different from the current one or it might have used a different > > > > compression level compared to the current Deflater which re-deflates > > > > the entry data. > > > > > > > > When the newly created entry is closed, the new compressed size will > > > > be checked against the original compressed size if that was recorded > > > > in the JarEntry and an exception will be thrown, when they differ: > > > > > > > > java.util.zip.ZipException: invalid entry compressed size (expected > > > > 237 but got 238 bytes) > > > > at > > > > > > > java.base/java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:26 > > > > 7) > > > > at > > > > > > java.base/java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java > > > > :192) > > > > at > > > > > > java.base/java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java > > > > :108) > > > > at jdk.test.lib.util.JarUtils.updateJar(JarUtils.java:294) > > > > at jdk.test.lib.util.JarUtils.updateJar(JarUtils.java:252) > > > > at HasUnsignedEntryTest.start(HasUnsignedEntryTest.java:77) > > > > at HasUnsignedEntryTest.main(HasUnsignedEntryTest.java:44) > > > > at > > > > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > > > > Method) > > > > at > > > > > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMet > > > > hodAccessorImpl.java:62) > > > > at > > > > > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Delega > > > > tingMethodAccessorImpl.java:43) > > > > at java.base/java.lang.reflect.Method.invoke(Method.java:564) > > > > at > > > > > > com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapp > > > > er.java:127) > > > > at java.base/java.lang.Thread.run(Thread.java:832) > > > > Suppressed: java.util.zip.ZipException: invalid entry > > > > compressed size (expected 237 but got 238 bytes) > > > > at > > > > > > > java.base/java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:26 > > > > 7) > > > > at > > > > > > java.base/java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:360) > > > > at > > > > > > > java.base/java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.ja > > > > va:237) > > > > at > > > > > java.base/java.util.zip.ZipOutputStream.close(ZipOutputStream.java:377) > > > > at > jdk.test.lib.util.JarUtils.updateJar(JarUtils.java:280) > > > > > > > > The fix is trivial. Instead of copying the JarEntry-s verbatim to the > > > > output stream, simply write newly created JarEntry-s to the output > > > > stream which only contain the entry name. This is also the way how > > > > this is handled by the jar tool, when it updates jar files. > > > > > > > > Thank you and best regards, > > > > Volker >