This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit 2172755ae0f84fc315a981dd5cb4c2759fc9552c Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Fri Jan 20 11:10:01 2023 +0100 Fix an `EOFException` occuring randomly during some tests. --- .../java/org/apache/sis/internal/storage/io/FileCacheByteChannel.java | 2 +- .../java/org/apache/sis/internal/storage/io/ComputedInputStream.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/FileCacheByteChannel.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/FileCacheByteChannel.java index 96fb66993e..5557d651ac 100644 --- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/FileCacheByteChannel.java +++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/FileCacheByteChannel.java @@ -543,10 +543,10 @@ public abstract class FileCacheByteChannel implements SeekableByteChannel { * Transfer bytes from the input stream to the buffer. The bytes are also copied to the temporary file. * We try to use `dst` instead of `buffer` in call to `cache(…)` because the former may be a direct buffer. */ - final ByteBuffer slice = dst.slice(); count = c.input.read(buffer.array(), Math.addExact(buffer.arrayOffset(), buffer.position()), buffer.remaining()); if (count > 0) { position += count; + final ByteBuffer slice = dst.slice(); if (buffer != dst) { dst.put(buffer.limit(count)); // Transfer from temporary buffer to destination buffer. } else { diff --git a/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/ComputedInputStream.java b/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/ComputedInputStream.java index 47106d17cd..566ff663b5 100644 --- a/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/ComputedInputStream.java +++ b/storage/sis-storage/src/test/java/org/apache/sis/internal/storage/io/ComputedInputStream.java @@ -113,8 +113,8 @@ final class ComputedInputStream extends InputStream { return -1; } if (count != 0) { - final int end = Math.min(offset + random.nextInt(count) + 1, length); - count = end - offset; + count = Math.min(random.nextInt(count) + 1, length - position); + final int end = offset + count; while (offset < end) { bytes[offset++] = valueAt(position++); }