This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Patch: FYI: JNI fixlet
- From: Tom Tromey <tromey at redhat dot com>
- To: Java Patch List <java-patches at gcc dot gnu dot org>
- Date: 18 Jan 2006 17:41:43 -0700
- Subject: Patch: FYI: JNI fixlet
- Reply-to: tromey at redhat dot com
I'm checking this in on the trunk and the 4.1 branch.
This is a JNI fix I've been sitting on for a long time.
This lets fuse-j work. Basically if you try to attach an
already-attached thread, you should still get back the environment
pointer.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* jni.cc (_Jv_JNI_AttachCurrentThread): Return environment if it
already exists.
Index: jni.cc
===================================================================
--- jni.cc (revision 109835)
+++ jni.cc (working copy)
@@ -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 @@
}
// 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;