You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/06/07 19:19:48 UTC
[commons-io] branch master updated: [IO-799] ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git
The following commit(s) were added to refs/heads/master by this push:
new 058de054 [IO-799] ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1.
058de054 is described below
commit 058de0546c14c309b7323b5f063d8faf85cdfb42
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jun 7 15:19:43 2023 -0400
[IO-799] ReaderInputStream.read() throws an exception instead of
returning -1 when called again after returning -1.
---
src/changes/changes.xml | 5 +++++
.../java/org/apache/commons/io/input/ReaderInputStream.java | 3 +++
.../org/apache/commons/io/input/ReaderInputStreamTest.java | 12 +++++++++++-
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f9ff3ae3..88ddad76 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -47,6 +47,11 @@ The <action> type attribute can be add,update,fix,remove.
</properties>
<body>
+ <release version="2.13.1" date="2023-MM-DD" description="Java 8 required.">
+ <action dev="ggregory" type="fix" issue="IO-799" due-to="Jeroen van der Vegt, Gary Gregory">
+ ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1.
+ </action>
+ </release>
<release version="2.13.0" date="2023-06-03" description="Java 8 required.">
<!-- FIX -->
<action issue="IO-791" dev="ggregory" type="fix" due-to="Chad Wilson, Gary Gregory">
diff --git a/src/main/java/org/apache/commons/io/input/ReaderInputStream.java b/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
index 0933079e..bba17caa 100644
--- a/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
+++ b/src/main/java/org/apache/commons/io/input/ReaderInputStream.java
@@ -339,6 +339,9 @@ public class ReaderInputStream extends InputStream {
* @throws IOException If an I/O error occurs
*/
private void fillBuffer() throws IOException {
+ if (endOfInput) {
+ return;
+ }
if (!endOfInput && (lastCoderResult == null || lastCoderResult.isUnderflow())) {
encoderIn.compact();
final int position = encoderIn.position();
diff --git a/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java b/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
index db104daf..944724e2 100644
--- a/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/ReaderInputStreamTest.java
@@ -209,6 +209,17 @@ public class ReaderInputStreamTest {
testWithSingleByteRead(LARGE_TEST_STRING, UTF_8);
}
+ @Test
+ public void testReadEofTwice() throws IOException {
+ try (ReaderInputStream reader = ReaderInputStream.builder().setCharset(StandardCharsets.UTF_8).setReader(new StringReader("123")).get()) {
+ assertEquals('1', reader.read());
+ assertEquals('2', reader.read());
+ assertEquals('3', reader.read());
+ assertEquals(-1, reader.read());
+ assertEquals(-1, reader.read());
+ }
+ }
+
@SuppressWarnings("deprecation")
@Test
public void testReadZero() throws Exception {
@@ -220,7 +231,6 @@ public class ReaderInputStreamTest {
testReadZero(inStr, inputStream);
}
}
-
private void testReadZero(final String inStr, final ReaderInputStream inputStream) throws IOException {
final byte[] bytes = new byte[30];
assertEquals(0, inputStream.read(bytes, 0, 0));