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 2021/07/07 12:35:25 UTC

[commons-csv] branch master updated: [CSV-158] Fix EOL checking for read array in ExtendedBufferedReader (#5)

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-csv.git


The following commit(s) were added to refs/heads/master by this push:
     new a6ca416  [CSV-158] Fix EOL checking for read array in ExtendedBufferedReader (#5)
a6ca416 is described below

commit a6ca4165a8f8d156f0fbfe33627bac1509e7ae9c
Author: Alexander Bondarev <al...@gmail.com>
AuthorDate: Wed Jul 7 15:35:17 2021 +0300

    [CSV-158] Fix EOL checking for read array in ExtendedBufferedReader (#5)
    
    * Fix eol checking for read array in ExtendedBufferedReader
    
    * Add test for eol checking when reading to different buffers
    
    Co-authored-by: mirasrael <d_...@mail.ru>
    Co-authored-by: Alexander Bondarev <al...@thomsonreuters.com>
---
 src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java | 2 +-
 .../java/org/apache/commons/csv/ExtendedBufferedReaderTest.java  | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java b/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
index b4b451f..63efb64 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 @@ final class ExtendedBufferedReader extends BufferedReader {
             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 a570aec..e83f94b 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 class ExtendedBufferedReaderTest {
         }
     }
 
+    @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));
     }