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.
classpath-ivmai-31.diff
Description: Binary data