aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/reflect
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2006-06-22 16:59:15 +0000
committerTom Tromey <tromey@gcc.gnu.org>2006-06-22 16:59:15 +0000
commit6d82bb8521a4707e6614523956e83307f5718792 (patch)
tree22b6780a71db92d402183472f143678203061184 /libjava/java/lang/reflect
parent746907b22568ce903b78bd00de93503b2b56476b (diff)
downloadgcc-6d82bb8521a4707e6614523956e83307f5718792.zip
gcc-6d82bb8521a4707e6614523956e83307f5718792.tar.gz
gcc-6d82bb8521a4707e6614523956e83307f5718792.tar.bz2
natField.cc (getAddr): Allow setting of final field when it is accessible.
* java/lang/reflect/natField.cc (getAddr): Allow setting of final field when it is accessible. From-SVN: r114896
Diffstat (limited to 'libjava/java/lang/reflect')
-rw-r--r--libjava/java/lang/reflect/natField.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/libjava/java/lang/reflect/natField.cc b/libjava/java/lang/reflect/natField.cc
index ae68639..487f62a 100644
--- a/libjava/java/lang/reflect/natField.cc
+++ b/libjava/java/lang/reflect/natField.cc
@@ -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"));