Uploaded image for project: 'Commons CSV'
  1. Commons CSV
  2. CSV-150

Escaping is not disableable

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.1
    • Fix Version/s: Review
    • Component/s: Parser
    • Labels:
      None

      Description

      Problem

      If escaping is disabled the Lexer maps the NULL Character to the magic char '\ufffe'. I currently hit this char randomly with data. This leads to a RuntimeException inside of org.apache.commons.csv.Lexer.parseEncapsulatedToken(Token) with the message "invalid char between encapsulated token and delimiter".

      Solution

      Don't map the Character object and use it.

      Lexer.java
          Lexer(final CSVFormat format, final ExtendedBufferedReader reader) {
              this.reader = reader;
              this.delimiter = format.getDelimiter();
              this.escape = format.getEscapeCharacter();
              .
              .
              .
          }
      
          boolean isEscape(final int ch) {
              return null != this.escape && escape.charValue() == ch;
          }
      
      Hint

      This pattern is used in other cases to. It seem to be a systematic error. This cases should be refactored also.

        Attachments

        1. CSV-150.patch
          2 kB
          Georg Tsakumagos

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                geo Georg Tsakumagos
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h