summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-22 16:59:15 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-22 16:59:15 +0000
commit246e94617167a3d7337bc2a3587096f9e4c2d6a4 (patch)
tree22b6780a71db92d402183472f143678203061184 /libjava
parentf6d123741762d5fa54723502dad832aa5d7e4a42 (diff)
downloadppe42-gcc-246e94617167a3d7337bc2a3587096f9e4c2d6a4.tar.gz
ppe42-gcc-246e94617167a3d7337bc2a3587096f9e4c2d6a4.zip
* java/lang/reflect/natField.cc (getAddr): Allow setting of final
field when it is accessible. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114896 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/lang/reflect/natField.cc4
2 files changed, 9 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index c1dcf661140..071d27df61a 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -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.
diff --git a/libjava/java/lang/reflect/natField.cc b/libjava/java/lang/reflect/natField.cc
index ae68639065b..487f62ab0e2 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"));
OpenPOWER on IntegriCloud