diff options
Diffstat (limited to 'libjava/java/lang/natString.cc')
-rw-r--r-- | libjava/java/lang/natString.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libjava/java/lang/natString.cc b/libjava/java/lang/natString.cc index cbd36bb..08f1755 100644 --- a/libjava/java/lang/natString.cc +++ b/libjava/java/lang/natString.cc @@ -473,9 +473,11 @@ java::lang::String::getBytes (jstring enc) { converter->setOutput(buffer, bufpos); int converted = converter->write(this, offset, todo, NULL); + bufpos = converter->count; if (converted == 0) { - jbyteArray newbuffer = JvNewByteArray(2 * buflen); + buflen *= 2; + jbyteArray newbuffer = JvNewByteArray(buflen); memcpy (elements (newbuffer), elements (buffer), bufpos); buffer = newbuffer; } @@ -487,8 +489,8 @@ java::lang::String::getBytes (jstring enc) } if (bufpos == buflen) return buffer; - jbyteArray result = JvNewByteArray(buflen); - memcpy (elements (result), elements (buffer), buflen); + jbyteArray result = JvNewByteArray(bufpos); + memcpy (elements (result), elements (buffer), bufpos); return result; } |