diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp index cac737125f1..527e4a7845c 100644 --- a/src/hotspot/share/classfile/javaClasses.cpp +++ b/src/hotspot/share/classfile/javaClasses.cpp @@ -456,16 +456,18 @@ char* java_lang_String::as_platform_dependent_str(Handle java_string, TRAPS) { } char *native_platform_string; - { JavaThread* thread = THREAD; - jstring js = (jstring) JNIHandles::make_local(thread, java_string()); - bool is_copy; + JavaThread* thread = THREAD; + jstring js = (jstring) JNIHandles::make_local(thread, java_string()); + { HandleMark hm(thread); ThreadToNativeFromVM ttn(thread); JNIEnv *env = thread->jni_environment(); + bool is_copy; native_platform_string = (_to_platform_string_fn)(env, js, &is_copy); assert(is_copy == JNI_TRUE, "is_copy value changed"); - JNIHandles::destroy_local(js); } + JNIHandles::destroy_local(js); + return native_platform_string; }