aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/reflect/natField.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/reflect/natField.cc')
-rw-r--r--libjava/java/lang/reflect/natField.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/libjava/java/lang/reflect/natField.cc b/libjava/java/lang/reflect/natField.cc
index b0ae48d..b10b5f5 100644
--- a/libjava/java/lang/reflect/natField.cc
+++ b/libjava/java/lang/reflect/natField.cc
@@ -257,7 +257,8 @@ static void*
setAddr (java::lang::reflect::Field* field, jclass caller, jobject obj)
{
void *addr = getAddr(field, caller, obj);
- if (field->getModifiers() & java::lang::reflect::Modifier::FINAL)
+ if (!field->isAccessible()
+ && field->getModifiers() & java::lang::reflect::Modifier::FINAL)
throw new java::lang::IllegalAccessException();
return addr;
}