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
Attachments
Issue Links
- links to