[jdom-interest] cvs.jdom.org is down. When will it be back
Malachi de AElfweald
malachi at tremerechantry.com
Sat Dec 21 02:01:14 PST 2002
Ah, I don't think I have tried that....
Looking at the code, setLength() calls copy() IF shared
toString() calls new String(StringBuffer)
which in turn calls StringBuffer.shared = true
SO....
calling toString() THEN setLength() is what is causing the problem
now, odd enough, copy simply creates a new buffer of the SAME SIZE
and fills it via System.arraycopy....
so, the problem MIGHT be in that call... basically, your calls below does
a System.arraycopy(currentContents, 0, newContents, 0, valueFromSetLength)
so, we should be able to determine if that is the problem by calling
System.arraycopy with length=0 with something other than
String/StringBuffer...
Malachi
On Fri, 20 Dec 2002 22:09:02 -0600, Bradley S. Huffman
<hip at a.cs.okstate.edu> wrote:
> Malachi de AElfweald writes:
>
>> I'm curious... I have seen many references to the "StringBuffer
>> error".... but,
>> I have not yet experienced anything... what exactly is this bug?
>
> As I recall it was using StringBuffer as a reusable buffer. As in
>
> StringBuffer buffer = new StringBuffer(1024);
>
> // store stuff in buffer
>
> String a = buffer.toString();
> buffer.setLength(0);
>
> Now if you reuse the buffer, thinking you still have 1024 char allocated,
> you'd be wrong. Either toString or setLength reallocates StringBuffers
> internal array to it's default size (which at think is 16).
>
> Brad
>
>
--
More information about the jdom-interest
mailing list