OSDN Git Service

* jni.cc (_Jv_JNI_AttachCurrentThread): Return environment if it
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Jan 2006 00:57:00 +0000 (00:57 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Jan 2006 00:57:00 +0000 (00:57 +0000)
already exists.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109936 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/jni.cc

index 032a98d..31f66e6 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-18  Tom Tromey  <tromey@redhat.com>
+
+       * jni.cc (_Jv_JNI_AttachCurrentThread): Return environment if it
+       already exists.
+
 2006-01-18  Keith Seitz  <keiths@redhat.com>
 
        * include/java-interp.h (_Jv_CompileMethod): Add declaration.
index fd82706..5a93753 100644 (file)
@@ -1,6 +1,6 @@
 // jni.cc - JNI implementation, including the jump table.
 
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation
 
    This file is part of libgcj.
@@ -2352,10 +2352,14 @@ _Jv_JNI_AttachCurrentThread (JavaVM *, jstring name, void **penv,
     }
 
   // Attaching an already-attached thread is a no-op.
-  if (_Jv_GetCurrentJNIEnv () != NULL)
-    return 0;
+  JNIEnv *env = _Jv_GetCurrentJNIEnv ();
+  if (env != NULL)
+    {
+      *penv = reinterpret_cast<void *> (env);
+      return 0;
+    }
 
-  JNIEnv *env = (JNIEnv *) _Jv_MallocUnchecked (sizeof (JNIEnv));
+  env = (JNIEnv *) _Jv_MallocUnchecked (sizeof (JNIEnv));
   if (env == NULL)
     return JNI_ERR;
   env->p = &_Jv_JNIFunctions;