You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/04/19 16:49:27 UTC
svn commit: r161901 -
directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
Author: trustin
Date: Tue Apr 19 07:49:26 2005
New Revision: 161901
URL: http://svn.apache.org/viewcvs?view=rev&rev=161901
Log:
* Fixed: ByteBuffer.getString() throws BufferOverflowException instead of BufferUnderflowException
* Fixed: ByteBuffer.getString() discards mark.
Modified:
directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
Modified: directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java
URL: http://svn.apache.org/viewcvs/directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java?view=diff&r1=161900&r2=161901
==============================================================================
--- directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java (original)
+++ directory/network/trunk/src/java/org/apache/mina/common/ByteBuffer.java Tue Apr 19 07:49:26 2005
@@ -19,6 +19,7 @@
package org.apache.mina.common;
import java.nio.BufferOverflowException;
+import java.nio.BufferUnderflowException;
import java.nio.ByteOrder;
import java.nio.CharBuffer;
import java.nio.DoubleBuffer;
@@ -914,11 +915,10 @@
{
boolean utf16 = decoder.charset().name().startsWith( "UTF-16" );
+ int oldPos = buf.position();
int oldLimit = buf.limit();
int end;
- buf.mark();
-
if( !utf16 )
{
while( buf.hasRemaining() )
@@ -960,7 +960,7 @@
}
}
- buf.reset();
+ buf.position( oldPos );
decoder.reset();
int expectedLength = (int) ( buf.remaining() * decoder.averageCharsPerByte() );
@@ -1016,16 +1016,15 @@
}
int i;
+ int oldPos = buf.position();
int oldLimit = buf.limit();
int end = buf.position() + fieldSize;
if( oldLimit < end )
{
- throw new BufferOverflowException();
+ throw new BufferUnderflowException();
}
- buf.mark();
-
if( !utf16 )
{
for( i = 0; i < fieldSize; i ++ )
@@ -1065,7 +1064,7 @@
}
}
- buf.reset();
+ buf.position( oldPos );
decoder.reset();
int expectedLength = (int) ( buf.remaining() * decoder.averageCharsPerByte() );