[ https://issues.apache.org/jira/browse/IO-679?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Proneel Guptan updated IO-679: ------------------------------ Description: Ran into a bug with AbstractCharacterFilterReader where I noticed that my filter was not receiving the actual characters, but was instead receiving an int value corresponding to the number of chars in my input stream buffer. I looked at the [source file|https://github.com/apache/commons-io/blob/master/src/main/java/org/apache/commons/io/input/AbstractCharacterFilterReader.java] and realized that on line 64: {{if (filter(read)) {}} should have been: {{if (filter(cbuf[readPos])) {}} 'read` has the number of chars read from the source reader, not the code point of the character read. I have attached a sample program that illustrates the issue. I can work on a patch and submit it when done. I will add a test case in the patch. was: Ran into a bug with AbstractCharacterFilterReader where I noticed that my filter was not receiving the actual characters, but was instead receiving an int value corresponding to the number of chars in my input stream buffer. I looked at the [source file|https://github.com/apache/commons-io/blob/master/src/main/java/org/apache/commons/io/input/AbstractCharacterFilterReader.java] and realized that on line 64: {{if (filter(read)) {}} should have been: {{if (filter(cbuf[readPos])) {}} 'read` has the number of chars read from the source reader, not the code point of the character read. I have attached a sample program that illustrates the issue. I can work on a patch and submit it when done. I will add a test case in the patch. > input.AbstractCharacterFilterReader passes count of chars read to filter, not > the filter char > --------------------------------------------------------------------------------------------- > > Key: IO-679 > URL: https://issues.apache.org/jira/browse/IO-679 > Project: Commons IO > Issue Type: Bug > Components: Streams/Writers > Affects Versions: 2.7 > Reporter: Proneel Guptan > Priority: Major > Attachments: AbstractCharacterFilterIssue.java > > > Ran into a bug with AbstractCharacterFilterReader where I noticed that my > filter was not receiving the actual characters, but was instead receiving an > int value corresponding to the number of chars in my input stream buffer. > I looked at the [source > file|https://github.com/apache/commons-io/blob/master/src/main/java/org/apache/commons/io/input/AbstractCharacterFilterReader.java] > and realized that on line 64: > {{if (filter(read)) {}} > should have been: > {{if (filter(cbuf[readPos])) {}} > 'read` has the number of chars read from the source reader, not the code > point of the character read. > I have attached a sample program that illustrates the issue. > I can work on a patch and submit it when done. I will add a test case in the > patch. > -- This message was sent by Atlassian Jira (v8.3.4#803005)