[multiple changes]
1999-07-01 Warren Levy <warrenl@cygnus.com> * gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength to count and revised comments to match. * gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java. * gnu/gcj/convert/Input_JavaSrc.java (read): ditto. * gnu/gcj/convert/Input_SJIS.java (read): ditto. * gnu/gcj/convert/Input_UTF8.java (read): ditto. * gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto. * gnu/gcj/convert/natInput_SJIS.cc (read): ditto. 1999-07-01 John-Marc Chandonia <jmc@cmpharm.ucsf.edu> * gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter properly as count rather than outlength. * java/io/BufferedOutputStream.java (write(byte[],int,int): Flush output on overflow rather than buffer fill. * java/io/BufferedReader.java (fill): Don't clear out the buffer if markPos is 0 and there is still room in the buffer. From-SVN: r27892
This commit is contained in:
@@ -91,15 +91,17 @@ public abstract class BytesToUnicode
|
||||
* bytes start at inbuffer[inpos], and end at inbuffer[inlength-1].
|
||||
* @param outbuffer buffer for the converted character
|
||||
* @param outpos position in buffer to start putting converted characters
|
||||
* @param outlength the maximum number of characters to convert
|
||||
* @param count the maximum number of characters to convert
|
||||
* @return number of chars placed in outbuffer.
|
||||
* Also, this.inpos is incremented by the number of bytes consumed.
|
||||
*
|
||||
* (Note the asymmetry in that the input upper bound is inbuffer[inlength-1],
|
||||
* while the output upper bound is outbuffer[outpos+outlength-1]. The
|
||||
* while the output upper bound is outbuffer[outpos+count-1]. The
|
||||
* justification is that inlength is like the count field of a
|
||||
* BufferedInputStream, while the outlength parameter is like the
|
||||
* length parameter of a read request.)
|
||||
* BufferedInputStream, while the count parameter is like the
|
||||
* length parameter of a read request.) The count parameter is
|
||||
* also defined to be <= outbuffer.length - outpos (per the specification
|
||||
* of the length parameter for a read request).
|
||||
*/
|
||||
public abstract int read (char[] outbuffer, int outpos, int outlength);
|
||||
public abstract int read (char[] outbuffer, int outpos, int count);
|
||||
}
|
||||
|
||||
@@ -11,21 +11,21 @@ package gnu.gcj.convert;
|
||||
/**
|
||||
* Convert ISO-Latin-1 (8851-1) text to Unicode.
|
||||
* @author Per Bothner <bothner@cygnus.com>
|
||||
* @date Match 1999.
|
||||
* @date March 1999.
|
||||
*/
|
||||
|
||||
public class Input_8859_1 extends BytesToUnicode
|
||||
{
|
||||
public String getName() { return "8859_1"; }
|
||||
|
||||
public int read (char[] outbuffer, int outpos, int outlength)
|
||||
public int read (char[] outbuffer, int outpos, int count)
|
||||
{
|
||||
int origpos = outpos;
|
||||
// Make sure fields of this are in registers.
|
||||
int inpos = this.inpos;
|
||||
byte[] inbuffer = this.inbuffer;
|
||||
int inavail = this.inlength - inpos;
|
||||
int outavail = outlength - outpos;
|
||||
int outavail = count;
|
||||
if (outavail > inavail)
|
||||
outavail = inavail;
|
||||
while (--outavail >= 0)
|
||||
|
||||
@@ -21,5 +21,5 @@ public class Input_EUCJIS extends BytesToUnicode
|
||||
int codeset = 0;
|
||||
int first_byte;
|
||||
|
||||
public native int read (char[] outbuffer, int outpos, int outlength);
|
||||
public native int read (char[] outbuffer, int outpos, int count);
|
||||
}
|
||||
|
||||
@@ -27,14 +27,14 @@ public class Input_JavaSrc extends BytesToUnicode
|
||||
|
||||
int value;
|
||||
|
||||
public int read (char[] outbuffer, int outpos, int outlength)
|
||||
public int read (char[] outbuffer, int outpos, int count)
|
||||
{
|
||||
int origpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
if (outpos >= outlength)
|
||||
if (outpos - origpos >= count)
|
||||
break;
|
||||
char b = (char) (inbuffer[inpos++] & 0xFF);
|
||||
switch (state)
|
||||
|
||||
@@ -18,7 +18,7 @@ public class Input_SJIS extends BytesToUnicode
|
||||
{
|
||||
public String getName() { return "SJIS"; }
|
||||
|
||||
public native int read (char[] outbuffer, int outpos, int outlength);
|
||||
public native int read (char[] outbuffer, int outpos, int count);
|
||||
|
||||
int first_byte;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ package gnu.gcj.convert;
|
||||
/**
|
||||
* Convert UTF8 to Unicode.
|
||||
* @author Per Bothner <bothner@cygnus.com>
|
||||
* @date Match 1999.
|
||||
* @date March 1999.
|
||||
*/
|
||||
|
||||
public class Input_UTF8 extends BytesToUnicode
|
||||
@@ -22,12 +22,12 @@ public class Input_UTF8 extends BytesToUnicode
|
||||
int partial_bytes_expected = 0;
|
||||
//int suggogate_second = -1;
|
||||
|
||||
public int read (char[] outbuffer, int outpos, int outlength)
|
||||
public int read (char[] outbuffer, int outpos, int count)
|
||||
{
|
||||
int origpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (outpos >= outlength)
|
||||
if (outpos - origpos >= count)
|
||||
break;
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
|
||||
@@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94];
|
||||
|
||||
jint
|
||||
gnu::gcj::convert::Input_EUCJIS::read(jcharArray outbuffer, jint outpos,
|
||||
jint outlength)
|
||||
jint count)
|
||||
{
|
||||
jint start_outpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (outpos >= outlength)
|
||||
if (outpos - start_outpos >= count)
|
||||
break;
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
|
||||
@@ -17,12 +17,12 @@ extern unsigned short JIS0212_to_Unicode[76][94];
|
||||
|
||||
jint
|
||||
gnu::gcj::convert::Input_SJIS::read(jcharArray outbuffer, jint outpos,
|
||||
jint outlength)
|
||||
jint count)
|
||||
{
|
||||
jint start_outpos = outpos;
|
||||
for (;;)
|
||||
{
|
||||
if (outpos >= outlength)
|
||||
if (outpos - start_outpos >= count)
|
||||
break;
|
||||
if (inpos >= inlength)
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user