< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page

        

@@ -381,18 +381,23 @@
     if (_to_java_string_fn == NULL) {
       fatal("NewStringPlatform missing");
     }
   }
 
-  jstring js = NULL;
-  { JavaThread* thread = (JavaThread*)THREAD;
+  JavaThread* thread = (JavaThread*)THREAD;
     assert(thread->is_Java_thread(), "must be java thread");
+
+  jstring js = NULL;
+  {
     HandleMark hm(thread);
     ThreadToNativeFromVM ttn(thread);
     js = (_to_java_string_fn)(thread->jni_environment(), str);
   }
-  return Handle(THREAD, JNIHandles::resolve(js));
+
+  Handle native_platform_string(THREAD, JNIHandles::resolve(js));
+  JNIHandles::destroy_local(js);  // destroy local JNIHandle.
+  return native_platform_string;
 }
 
 // Converts a Java String to a native C string that can be used for
 // native OS calls.
 char* java_lang_String::as_platform_dependent_str(Handle java_string, TRAPS) {
< prev index next >