You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Elena Sayapina (JIRA)" <ji...@apache.org> on 2007/06/15 12:47:26 UTC
[jira] Closed: (HARMONY-3854) [classlib][luni]
InputStreamReader.read(char[] buffer) doesn't fill in all the buffer when
input is still available
[ https://issues.apache.org/jira/browse/HARMONY-3854?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Elena Sayapina closed HARMONY-3854.
-----------------------------------
Resolution: Fixed
Great! Issue has been fixed.
Verified on Harmony-r547573-msvc-release.
> [classlib][luni] InputStreamReader.read(char[] buffer) doesn't fill in all the buffer when input is still available
> -------------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-3854
> URL: https://issues.apache.org/jira/browse/HARMONY-3854
> Project: Harmony
> Issue Type: Bug
> Components: Classlib
> Reporter: Elena Sayapina
> Assignee: Paulex Yang
> Attachments: H-3854_upd.patch, InputStreamReader_3854.patch, readTest.zip, readTest2.zip, readTest3.zip
>
>
> Method read of InputStreamReader works incorrectly in some cases.
> If call method read(char[] buffer) with the non-tiny buffer more than two times it reads chars incorrectly,
> i.e. doesn't fill in all the buffer when some input is still available.
> Please, consider the following piece of code (note that data.txt contains about 14000 chars):
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.InputStreamReader;
> public class readTest {
> public static void main(String[] args) throws IOException {
>
> String filename = new String("data.txt");
> System.out.println("Data file length: " + new File(filename).length());
> InputStream stream = new FileInputStream(new File(filename));
> InputStreamReader reader = new InputStreamReader(stream);
>
> int read = 0;
> char[] buffer = new char[4];
> System.out.println("Char buffer capacity: " + buffer.length);
> try {
> read = reader.read(buffer);
> } catch (Exception e) {
> e.printStackTrace();
> System.out.println("TEST FAILED: unexpected" + e);
> }
> System.out.println("Number of chars read: " + read);
> read = 0;
> buffer = new char[9000];
> System.out.println("Char buffer capacity: " + buffer.length);
> try {
> read = reader.read(buffer);
> } catch (Exception e) {
> e.printStackTrace();
> System.out.println("TEST FAILED: unexpected" + e);
> }
> System.out.println("Number of chars read: " + read);
>
> System.out.println("buffer[8999]: " + buffer[8999]);
> System.out.println("buffer[8998]: " + buffer[8998]);
> System.out.println("buffer[8189]: " + buffer[8189]);
> System.out.println("buffer[8188]: " + buffer[8188]);
> System.out.println("buffer[8187]: " + buffer[8187]);
>
> if (read == buffer.length) System.out.println("TEST PASSED");
> else System.out.println("TEST FAILED");
> }
> }
> Output on Harmony-r537585:
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors,
> as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r537585, (May 13 2007), Windows/ia32/msvc 1310, debug build
> http://incubator.apache.org/harmony
> Data file length: 14000
> Char buffer capacity: 4
> Number of chars read: 4
> Char buffer capacity: 9000
> Number of chars read: 8188
> buffer[8999]:
> buffer[8998]:
> buffer[8189]:
> buffer[8188]:
> buffer[8187]: t
> TEST FAILED
> Output on HotSpot:
> java version "1.5.0_11"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)
> Data file length: 14000
> Char buffer capacity: 4
> Number of chars read: 4
> Char buffer capacity: 9000
> Number of chars read: 9000
> buffer[8999]: t
> buffer[8998]: s
> buffer[8189]: e
> buffer[8188]: T
> buffer[8187]: t
> TEST PASSED
> NOTE that if remove first try..catch block with reader.read(buffer) then test passes,
> or if reduce buffer size from 9000 to 8188 test also passes.
> Please, use the data from attached readTest.zip to reproduce the failure.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.