7199551: (bf) CharBuffer.append(CharSequence) throws BufferOverflowException for read-only buffer

Alan Bateman Alan.Bateman at oracle.com
Thu Sep 20 07:06:35 PDT 2012


On 20/09/2012 11:42, Chris Hegarty wrote:
>
> My comment here is that I think put(CharBuffer src) will throw 
> BufferOverflowException even if the buffer is read only. Where as the 
> other put methods do the opposite, right?
You are right, and my apologies I didn't quite grok what you were 
getting at first. Your observation has promoted me to look at 
put(CharBuffer) where I see that the lack of an explicit check for 
read-only means that it will read one element from the source buffer 
before it throws ReadOnlyBufferException.

As this needs an explicit check then it brings up the question as to the 
ordering of the checks. For this double error case (attempting to do a 
bulk put into a read-only buffer that just have enough space remaining) 
then I think the read-only check is better to do first. I realize this 
is a small behavior change (I can relate to people that might need to 
catch ReadOnlyBufferException; on the other hand BufferOverflowException 
probably means a bug somewhere).

The updated webrev is here:

http://cr.openjdk.java.net/~alanb/7199551/webrev/

This is for jdk8 only of course.

-Alan




More information about the nio-dev mailing list