OutputStreamWriter.java (writeChars): Use a 'do' loop.

* java/io/OutputStreamWriter.java (writeChars): Use a 'do' loop.
	Set 'out.count' earlier.
	(close): Call setFinished on converter.
	(flush): Always write work buffer.
	* java/io/PrintStream.java (writeChars): Do 'do' loop.
	(close): Call setFinished on converter.  Write a 'flush' array.
	* java/lang/natString.cc (getBytes): Call setFinished on
	converter.
	* gnu/gcj/convert/CharsetToBytesAdaptor.java (hasBytes): New
	field.
	(write): Set hasBytes.  Changed 'finished' logic.
	(havePendingBytes): Rewrote.
	(setFinished): New method.
	* gnu/gcj/convert/UnicodeToBytes.java (setFinished): New method.
	* testsuite/libjava.lang/RH194522.java: New file.
	* testsuite/libjava.lang/RH194522.out: New file.

From-SVN: r115039
This commit is contained in:
Tom Tromey
2006-06-27 20:38:10 +00:00
committed by Tom Tromey
parent 80cd0e33d9
commit 9e01bff779
8 changed files with 85 additions and 23 deletions
+7 -3
View File
@@ -1,5 +1,5 @@
/* PrintStream.java -- OutputStream for printing output
Copyright (C) 1998, 1999, 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -174,6 +174,8 @@ public class PrintStream extends FilterOutputStream
{
try
{
converter.setFinished();
writeChars(new char[0], 0, 0);
flush();
out.close();
}
@@ -251,7 +253,7 @@ public class PrintStream extends FilterOutputStream
private void writeChars(char[] buf, int offset, int count)
throws IOException
{
while (count > 0 || converter.havePendingBytes())
do
{
converter.setOutput(work_bytes, 0);
int converted = converter.write(buf, offset, count);
@@ -259,12 +261,13 @@ public class PrintStream extends FilterOutputStream
count -= converted;
out.write(work_bytes, 0, converter.count);
}
while (count > 0 || converter.havePendingBytes());
}
private void writeChars(String str, int offset, int count)
throws IOException
{
while (count > 0 || converter.havePendingBytes())
do
{
converter.setOutput(work_bytes, 0);
int converted = converter.write(str, offset, count, work);
@@ -272,6 +275,7 @@ public class PrintStream extends FilterOutputStream
count -= converted;
out.write(work_bytes, 0, converter.count);
}
while (count > 0 || converter.havePendingBytes());
}
/**