]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
natField.cc (getAddr): Allow setting of final field when it is accessible.
authorTom Tromey <tromey@redhat.com>
Thu, 22 Jun 2006 16:59:15 +0000 (16:59 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Thu, 22 Jun 2006 16:59:15 +0000 (16:59 +0000)
* java/lang/reflect/natField.cc (getAddr): Allow setting of final
field when it is accessible.

From-SVN: r114896

libjava/ChangeLog
libjava/java/lang/reflect/natField.cc

index c1dcf661140fd5784edfafc2a50fda0d75374d62..071d27df61afeb7537c225d672d353272626ef0f 100644 (file)
@@ -1,3 +1,8 @@
+2006-06-22  Tom Tromey  <tromey@redhat.com>
+
+       * java/lang/reflect/natField.cc (getAddr): Allow setting of final
+       field when it is accessible.
+
 2006-06-21  Bryce McKinlay  <mckinlay@redhat.com>
 
        * include/win32-threads.h (_Jv_ThreadDesc_t): New typedef. 
index ae68639065b58f20cb46e7aba31f59b14bd4f758..487f62ab0e2a1f64aed030b3d37ad402ae5bcd9a 100644 (file)
@@ -72,6 +72,10 @@ getAddr (java::lang::reflect::Field* field, jclass caller, jobject obj,
 
   // Setting a final field is usually not allowed.
   if (checkFinal
+      // As of 1.5, you can set a non-static final field if it is
+      // accessible.
+      && (! field->isAccessible()
+         || (field->getModifiers() & java::lang::reflect::Modifier::STATIC))
       && (field->getModifiers() & java::lang::reflect::Modifier::FINAL))
     throw new java::lang::IllegalAccessException(JvNewStringUTF 
       ("Field is final"));