hotspot/src/share/vm/prims/jni.cpp
changeset 7414 940d84ca7fca
parent 7405 e6fc8d3926f8
child 8076 96d498ec7ae1
--- a/hotspot/src/share/vm/prims/jni.cpp	Mon Dec 06 20:21:15 2010 -0500
+++ b/hotspot/src/share/vm/prims/jni.cpp	Tue Dec 07 03:15:45 2010 -0800
@@ -2113,11 +2113,10 @@
 JNI_ENTRY(const char*, jni_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy))
   JNIWrapper("GetStringUTFChars");
   DTRACE_PROBE3(hotspot_jni, GetStringUTFChars__entry, env, string, isCopy);
-  ResourceMark rm;
-  char* str = java_lang_String::as_utf8_string(JNIHandles::resolve_non_null(string));
-  int length = (int)strlen(str);
-  char* result = AllocateHeap(length+1, "GetStringUTFChars");
-  strcpy(result, str);
+  oop java_string = JNIHandles::resolve_non_null(string);
+  size_t length = java_lang_String::utf8_length(java_string);
+  char* result = AllocateHeap(length + 1, "GetStringUTFChars");
+  java_lang_String::as_utf8_string(java_string, result, (int) length + 1);
   if (isCopy != NULL) *isCopy = JNI_TRUE;
   DTRACE_PROBE1(hotspot_jni, GetStringUTFChars__return, result);
   return result;