Hi!

This patch fixes OutputStreamWriter for the encodings with a byte-order-mark 
(UnicodeBig/Little and UTF-16).

In major, the patch also:
- eliminates dead code in flush() and write();
- documents NPE for write();
- makes close() method close the underlying stream even if flushing terminates 
abruptly.

ChangeLog entries:
        * java/io/OutputStreamWriter.java:
        (needsUnicodeBOM): New private field.
        (outputBuffer): Move initialization from the constructors.
        (OutputStreamWriter(OutputStream,String)): Call adjustUnicodeEncoding
        and set needsUnicodeBOM if appropriate.
        (OutputStreamWriter(OutputStream)): Likewise.
        (OutputStreamWriter(OutputStream,Charset)): Likewise.
        (OutputStreamWriter(OutputStream,String)): Adjust
        UnsupportedEncodingException messages format.
        (adjustUnicodeEncoding(String)): New private static method.
        (close()): Replace flush() call with flushBuffer() and out.flush()
        called inside a try block; call out.close() inside finally block.
        (flush()): Move buffer flushing code to flushBuffer(); call
        flushBuffer().
        (flush()): Don't check outputBuffer for null.
        (write(char[],int,int)): Likewise.
        (flushBuffer()): New package-private method.
        (write(char[],int,int)): Document NPE.
        (write(String,int,int)): Likewise.
        (write(char[],int,int)): Remove the trailing dot character for the
        exception messages.
        (writeConvert(char[],int,int)): Likewise.
        (write(char[],int,int)): Handle needsUnicodeBOM case.
        (write(char)): Likewise.
        (nullConversion(char)): Convert to a static method.
        (write(String,int,int)): Throw NPE (instead of IOException) if the
        argument is null.
        (write(char)): Remove unbuffered writing since outputBuffer is always
        non-null.

Regards.

Attachment: classpath-ivmai-31.diff
Description: Binary data

Reply via email to