>>>>> "Ian" == Ian Rogers <[EMAIL PROTECTED]> writes:

Ian> There's a bug in the Classpath CVS head that's crashing the Jikes RVM
Ian> (thanks to Mark for helping me to find it). It's in jcl.c where we
Ian> delete a global ref which is actually only a local ref. The following
Ian> fixes it.

Thanks.  I'm checking in this variant, which removes the now-unused
'tmp' variables.

Tom

Index: ChangeLog
from  Ian Rogers  <[EMAIL PROTECTED]>

        * native/jni/classpath/jcl.c (JNI_OnLoad): Don't call
        DeleteGlobalRef on a local ref.

Index: native/jni/classpath/jcl.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/classpath/jcl.c,v
retrieving revision 1.25
diff -u -r1.25 jcl.c
--- native/jni/classpath/jcl.c 17 Sep 2006 19:13:01 -0000 1.25
+++ native/jni/classpath/jcl.c 27 Sep 2006 16:09:05 -0000
@@ -1,5 +1,5 @@
 /* jcl.c
-   Copyright (C) 1998, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1998, 2005, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -72,11 +72,7 @@
 #if SIZEOF_VOID_P == 8
   rawDataClass = (*env)->FindClass (env, "gnu/classpath/Pointer64");
   if (rawDataClass != NULL)
-    {
-      jclass tmp = rawDataClass;
-      rawDataClass = (*env)->NewGlobalRef (env, rawDataClass);
-      (*env)->DeleteGlobalRef (env, tmp);
-    }
+    rawDataClass = (*env)->NewGlobalRef (env, rawDataClass);
 
   if (rawDataClass != NULL)
     {
@@ -87,11 +83,7 @@
 #if SIZEOF_VOID_P == 4
   rawDataClass = (*env)->FindClass (env, "gnu/classpath/Pointer32");
   if (rawDataClass != NULL)
-    {
-      jclass tmp = rawDataClass;
-      rawDataClass = (*env)->NewGlobalRef (env, rawDataClass);
-      (*env)->DeleteGlobalRef (env, tmp);
-    }
+    rawDataClass = (*env)->NewGlobalRef (env, rawDataClass);
 
   if (rawDataClass != NULL)
     {

Reply via email to