--- old/src/share/vm/utilities/utf8.cpp 2014-04-03 14:47:15.083235291 +0200 +++ new/src/share/vm/utilities/utf8.cpp 2014-04-03 14:47:14.918540203 +0200 @@ -329,14 +329,10 @@ char* UNICODE::as_utf8(jchar* base, int length) { int utf8_len = utf8_length(base, length); - u_char* result = NEW_RESOURCE_ARRAY(u_char, utf8_len + 1); - u_char* p = result; - for (int index = 0; index < length; index++) { - p = utf8_write(p, base[index]); - } - *p = '\0'; - assert(p == &result[utf8_len], "length prediction must be correct"); - return (char*) result; + u_char* buf = NEW_RESOURCE_ARRAY(u_char, utf8_len + 1); + char* result = as_utf8(base, length, (char*) buf, utf8_len + 1); + assert((int) strlen(result) == utf8_len, "length prediction must be correct"); + return result; } char* UNICODE::as_utf8(jchar* base, int length, char* buf, int buflen) {