Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8230343

LineNumberReader.read(char[] cbuf, int off, int len) sets skipLF

XMLWordPrintable

    • x86_64
    • windows_10

      A DESCRIPTION OF THE PROBLEM :
      Only LineNumberReader.read() compresses \r\n to \n. For its other methods this behavior is not documented. This is also confirmed by this ([0]) evaluation comment on JDK-6498795. However, read(char[] cbuf, int off, int len) actually sets skipLF and therefore affects read()'s behavior. Expected would be that read(char[], ...) only clears skipLF and then uses a local variable to track line terminators.

      [0] https://bugs.openjdk.java.net/browse/JDK-6498795?focusedCommentId=12139576#comment-12139576


      ---------- BEGIN SOURCE ----------
      import java.io.IOException;
      import java.io.LineNumberReader;
      import java.io.StringReader;

      public class ReadSkipLfTest {
          public static void main(String[] args) throws IOException {
              String string = "\r\n";
              LineNumberReader reader = new LineNumberReader(new StringReader(string));
              
              // read(char[]) is not described as compressing \r\n, so it should just read
              // \r and then subsequent read() should read \n
              reader.read(new char[1]);
              
              if (reader.read() == -1) {
                  throw new AssertionError("Expected \\n");
              }
          }
      }

      ---------- END SOURCE ----------

      FREQUENCY : always


            bpb Brian Burkhalter
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: