[
https://issues.apache.org/jira/browse/IO-277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary D. Gregory closed IO-277.
------------------------------
Closing, we released version 2.1.
> ReaderInputStream enters infinite loop when it encounters an unmappable
> character
> ---------------------------------------------------------------------------------
>
> Key: IO-277
> URL: https://issues.apache.org/jira/browse/IO-277
> Project: Commons IO
> Issue Type: Bug
> Components: Streams/Writers
> Affects Versions: 2.0.1
> Reporter: Mike Thomas
> Assignee: Niall Pemberton
> Fix For: 2.1
>
> Attachments: TestReaderInputStreamLoop.java
>
>
> The ReaderInputStream.read(byte[] b, int off, int len) method enters an
> infinite loop when its CharsetEncoder encounters an unmappable character in
> the input buffer.
> When its CharsetEncoder encounters an unmappable character, the value of
> CoderResult lastCoderResult.isUnmappable() == true, and Reader.read() is not
> invoked on the underlying Reader ever again.
> Attaching source file that reproduces this behavior.
> One fix to consider is to call
> CharsetEncoder.onUnmappableCharacter(CodingErrorAction) in the
> ReaderInputStream constructor with a value other than the default
> CodingErrorAction.REPORT. e.g.:
> public ReaderInputStream(Reader reader, Charset charset, int bufferSize) {
> this.reader = reader;
> encoder = charset.newEncoder();
> encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
> ...
> By replacing the unmappable character with encoder's default replacement
> character, this effectively prevents the infinite loop from occurring. I'm
> not sure if that's the ideal behavior, but it seems fairly consistent with
> what org.apache.commons.io.output.WriterOutputStream does.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira