This is the mail archive of the
java-patches@sources.redhat.com
mailing list for the Java project.
Patch: initialize Boolean
- To: Java Patch List <java-patches at sourceware dot cygnus dot com>
- Subject: Patch: initialize Boolean
- From: Tom Tromey <tromey at cygnus dot com>
- Date: 13 Sep 2000 12:23:06 -0600
- Reply-To: tromey at cygnus dot com
I currently still can't rebuild the current libjava :-(.
However, I tested this same patch on a different, but similar, libjava
source base (the Red Hat internal one) and I am confident that it is
correct. It fixes a bug in java.lang.reflect whereby Boolean was used
without initializing it first.
2000-09-13 Tom Tromey <tromey@cygnus.com>
* java/lang/reflect/natArray.cc (BooleanClass): New define.
(get): Ensure Boolean class is initialized.
* java/lang/reflect/natField.cc (BooleanClass): New define.
(get): Ensure Boolean class is initialized.
Tom
Index: java/lang/reflect/natArray.cc
===================================================================
RCS file: /cvs/java/libgcj/libjava/java/lang/reflect/natArray.cc,v
retrieving revision 1.6
diff -u -r1.6 natArray.cc
--- natArray.cc 2000/03/09 04:50:49 1.6
+++ natArray.cc 2000/09/13 18:13:44
@@ -25,6 +25,9 @@
#include <java/lang/Boolean.h>
#include <java/lang/Character.h>
+#define BooleanClass _CL_Q34java4lang7Boolean
+extern java::lang::Class BooleanClass;
+
jobject
java::lang::reflect::Array::newInstance (jclass componentType, jint length)
{
@@ -211,10 +214,13 @@
if (elementType == JvPrimClass (char))
return new java::lang::Character (elements ((jcharArray) array) [index]);
if (elementType == JvPrimClass (boolean))
- if (elements ((jbooleanArray) array) [index])
- return java::lang::Boolean::TRUE;
- else
- return java::lang::Boolean::FALSE;
+ {
+ _Jv_InitClass (&BooleanClass);
+ if (elements ((jbooleanArray) array) [index])
+ return java::lang::Boolean::TRUE;
+ else
+ return java::lang::Boolean::FALSE;
+ }
JvThrow (new java::lang::IllegalArgumentException());
}
Index: java/lang/reflect/natField.cc
===================================================================
RCS file: /cvs/java/libgcj/libjava/java/lang/reflect/natField.cc,v
retrieving revision 1.4
diff -u -r1.4 natField.cc
--- natField.cc 2000/03/07 19:55:27 1.4
+++ natField.cc 2000/09/13 18:13:44
@@ -26,6 +26,9 @@
#include <java/lang/Boolean.h>
#include <java/lang/Character.h>
+#define BooleanClass _CL_Q34java4lang7Boolean
+extern java::lang::Class BooleanClass;
+
jint
java::lang::reflect::Field::getModifiers ()
{
@@ -251,10 +254,13 @@
if (fld->type == JvPrimClass (char))
return new java::lang::Character (* (jchar*) addr);
if (fld->type == JvPrimClass (boolean))
- if (* (jboolean*) addr)
- return java::lang::Boolean::TRUE;
- else
- return java::lang::Boolean::FALSE;
+ {
+ _Jv_InitClass (&BooleanClass);
+ if (* (jboolean*) addr)
+ return java::lang::Boolean::TRUE;
+ else
+ return java::lang::Boolean::FALSE;
+ }
JvThrow (new java::lang::IllegalArgumentException());
}