[ 
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)

Reply via email to