--- a/src/hotspot/share/classfile/javaClasses.cpp Mon Jun 04 22:03:10 2018 +0200
+++ b/src/hotspot/share/classfile/javaClasses.cpp Mon Jun 04 23:01:48 2018 +0200
@@ -310,7 +310,8 @@
Handle h_obj = basic_create(length, is_latin1, CHECK_NH);
if (length > 0) {
if (!has_multibyte) {
- strncpy((char*)value(h_obj())->byte_at_addr(0), utf8_str, length);
+ const jbyte* src = reinterpret_cast<const jbyte*>(utf8_str);
+ ArrayAccess<>::arraycopy_from_native(src, value(h_obj()), typeArrayOopDesc::element_offset<jbyte>(0), length);
} else if (is_latin1) {
UTF8::convert_to_unicode(utf8_str, value(h_obj())->byte_at_addr(0), length);
} else {
@@ -356,7 +357,8 @@
Handle h_obj = basic_create(length, is_latin1, CHECK_NH);
if (length > 0) {
if (!has_multibyte) {
- strncpy((char*)value(h_obj())->byte_at_addr(0), utf8_str, length);
+ const jbyte* src = reinterpret_cast<const jbyte*>(utf8_str);
+ ArrayAccess<>::arraycopy_from_native(src, value(h_obj()), typeArrayOopDesc::element_offset<jbyte>(0), length);
} else if (is_latin1) {
UTF8::convert_to_unicode(utf8_str, value(h_obj())->byte_at_addr(0), length);
} else {