On Wed, 15 Nov 2023 07:41:32 GMT, Jaikiran Pai <[email protected]> wrote:
> Overall, this is a very good improvement to the test and looks good to me. I
> just a have a trivial comment about a typo in a code comment, which I've
> added inline.
Thanks for your review, Jaikiran! With these latest, comment-only changes, this
PR is now looking for a sponsor.
> test/jdk/java/util/zip/ZipFile/CenSizeTooLarge.java line 78:
>
>> 76: public static final int NAME_LENGTH = 10;
>> 77:
>> 78: // Use a shared LocalDataTime on all entries to save processing time
>
> Hello Eirik, there appears to be a typo in the comment here. It should have
> been `LocalDateTime`.
Fixed
> test/jdk/java/util/zip/ZipFile/CenSizeTooLarge.java line 204:
>
>> 202: channel.position(position);
>> 203: // Check for last CEN record
>> 204: if (Arrays.equals(LAST_CEN_COMMENT_BYTES, 0,
>> LAST_CEN_COMMENT_BYTES.length, b, off, len)) {
>
> The way the instance of a `SparseOutputStream` is used in this test, it gets
> passed to the constructor of `ZipOutputStream`. That then means that there is
> no buffering involved when bytes are written out to the output stream
> internally by `ZipOutputStream`. The implementation of `ZipOutputStream`
> writes out the `ZipEntry`'s comment (if any) in one single `write(byte[])`
> call on the outputstream, so it's guaranteed that the `byte[] b` passed in
> here will actually have the entire comment (from `off` to `len`). So this
> `Arrays.equals(...)` check is then guaranteed to pass (when that specific
> entry does get written out). So this check looks good to me.
Thanks, this was a nice observation. I added a short comment to the
SparseOutputStream noting the instances should be passed directly, without any
buffering.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/12991#issuecomment-1813123375
PR Review Comment: https://git.openjdk.org/jdk/pull/12991#discussion_r1394673748
PR Review Comment: https://git.openjdk.org/jdk/pull/12991#discussion_r1394674564