diff --git a/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java b/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java index b4b451f715..63efb640fb 100644 --- a/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java +++ b/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java @@ -164,7 +164,7 @@ public int read(final char[] buf, final int offset, final int length) throws IOE for (int i = offset; i < offset + len; i++) { final char ch = buf[i]; if (ch == LF) { - if (CR != (i > 0 ? buf[i - 1] : lastChar)) { + if (CR != (i > offset ? buf[i - 1] : lastChar)) { eolCounter++; } } else if (ch == CR) { diff --git a/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java b/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java index a570aec5e2..e83f94b18f 100644 --- a/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java +++ b/src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java @@ -204,6 +204,15 @@ public void testReadChar() throws Exception { } } + @Test + public void testReadingInDifferentBuffer() throws Exception { + char[] tmp1 = new char[2], tmp2 = new char[4]; + ExtendedBufferedReader br = createBufferedReader("1\r\n2\r\n"); + br.read(tmp1, 0, 2); + br.read(tmp2, 2, 2); + assertEquals(2, br.getCurrentLineNumber()); + } + private ExtendedBufferedReader createBufferedReader(final String s) { return new ExtendedBufferedReader(new StringReader(s)); }