Skip to content

Commit a6ca416

Browse files
mirasraelmirasraelAlexander Bondarev
authored
[CSV-158] Fix EOL checking for read array in ExtendedBufferedReader (apache#5)
* Fix eol checking for read array in ExtendedBufferedReader * Add test for eol checking when reading to different buffers Co-authored-by: mirasrael <d_signer@mail.ru> Co-authored-by: Alexander Bondarev <alexander.bondarev@thomsonreuters.com>
1 parent abfdf83 commit a6ca416

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public int read(final char[] buf, final int offset, final int length) throws IOE
164164
for (int i = offset; i < offset + len; i++) {
165165
final char ch = buf[i];
166166
if (ch == LF) {
167-
if (CR != (i > 0 ? buf[i - 1] : lastChar)) {
167+
if (CR != (i > offset ? buf[i - 1] : lastChar)) {
168168
eolCounter++;
169169
}
170170
} else if (ch == CR) {

src/test/java/org/apache/commons/csv/ExtendedBufferedReaderTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,15 @@ public void testReadChar() throws Exception {
204204
}
205205
}
206206

207+
@Test
208+
public void testReadingInDifferentBuffer() throws Exception {
209+
char[] tmp1 = new char[2], tmp2 = new char[4];
210+
ExtendedBufferedReader br = createBufferedReader("1\r\n2\r\n");
211+
br.read(tmp1, 0, 2);
212+
br.read(tmp2, 2, 2);
213+
assertEquals(2, br.getCurrentLineNumber());
214+
}
215+
207216
private ExtendedBufferedReader createBufferedReader(final String s) {
208217
return new ExtendedBufferedReader(new StringReader(s));
209218
}

0 commit comments

Comments
 (0)