@ -82,7 +82,8 @@ public class ByteBuffer extends OutputStream {
* /
* /
public static boolean HIGH_PRECISION = false ;
public static boolean HIGH_PRECISION = false ;
private static final DecimalFormatSymbols dfs = new DecimalFormatSymbols ( Locale . US ) ;
private static final DecimalFormatSymbols dfs = new DecimalFormatSymbols ( Locale . US ) ;
private static final int HALF_INTEGER = Integer . MAX_VALUE > > 1 ;
/** Creates new ByteBuffer with capacity 128 */
/** Creates new ByteBuffer with capacity 128 */
public ByteBuffer ( ) {
public ByteBuffer ( ) {
this ( 128 ) ;
this ( 128 ) ;
@ -188,8 +189,11 @@ public class ByteBuffer extends OutputStream {
* /
* /
public ByteBuffer append_i ( int b ) {
public ByteBuffer append_i ( int b ) {
int newcount = count + 1 ;
int newcount = count + 1 ;
if ( newcount < 0 ) {
throw new OutOfMemoryError ( ) ;
}
if ( newcount > buf . length ) {
if ( newcount > buf . length ) {
byte newbuf [ ] = new byte [ Math . max ( buf . length < < 1 , newcount ) ] ;
byte newbuf [ ] = new byte [ Math . max ( Math . min ( buf . length , HALF_INTEGER ) < < 1 , newcount ) ] ;
System . arraycopy ( buf , 0 , newbuf , 0 , count ) ;
System . arraycopy ( buf , 0 , newbuf , 0 , count ) ;
buf = newbuf ;
buf = newbuf ;
}
}
@ -211,8 +215,11 @@ public class ByteBuffer extends OutputStream {
( ( off + len ) > b . length ) | | ( ( off + len ) < 0 ) | | len = = 0 )
( ( off + len ) > b . length ) | | ( ( off + len ) < 0 ) | | len = = 0 )
return this ;
return this ;
int newcount = count + len ;
int newcount = count + len ;
if ( newcount < 0 ) {
throw new OutOfMemoryError ( ) ;
}
if ( newcount > buf . length ) {
if ( newcount > buf . length ) {
byte newbuf [ ] = new byte [ Math . max ( buf . length < < 1 , newcount ) ] ;
byte newbuf [ ] = new byte [ Math . max ( Math . min ( buf . length , HALF_INTEGER ) < < 1 , newcount ) ] ;
System . arraycopy ( buf , 0 , newbuf , 0 , count ) ;
System . arraycopy ( buf , 0 , newbuf , 0 , count ) ;
buf = newbuf ;
buf = newbuf ;
}
}