From 0196f4e0a514180bb0813f7a28f73beac5e47f13 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 5 Aug 2003 20:06:57 +0000 Subject: re PR libgcj/11779 (Field reflection incorrectly throws IllegalAccessException) Fix for PR libgcj/11779: * java/lang/reflect/natField.cc (getAddr): Skip frames in Field class. From-SVN: r70185 --- libjava/java/lang/reflect/natField.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'libjava/java') diff --git a/libjava/java/lang/reflect/natField.cc b/libjava/java/lang/reflect/natField.cc index 5f104a9..b7f12f0 100644 --- a/libjava/java/lang/reflect/natField.cc +++ b/libjava/java/lang/reflect/natField.cc @@ -59,13 +59,14 @@ getAddr (java::lang::reflect::Field* field, jclass caller, jobject obj) // calls. However, we never implemented that, so we have to find // the caller by hand instead. gnu::gcj::runtime::StackTrace *t - = new gnu::gcj::runtime::StackTrace(4); + = new gnu::gcj::runtime::StackTrace(7); try { - for (int i = 1; !caller; i++) - { - caller = t->classAt (i); - } + // We want to skip all the frames on the stack from this class. + for (int i = 1; + !caller || caller == &java::lang::reflect::Field::class$; + i++) + caller = t->classAt (i); } catch (::java::lang::ArrayIndexOutOfBoundsException *e) { -- cgit v1.1