From 038d26bdaf35eec8cbda97e3f0dc6c4780e1ae59 Mon Sep 17 00:00:00 2001 From: tromey Date: Mon, 24 Apr 2006 21:28:36 +0000 Subject: [PATCH] * java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip . git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113229 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 4 ++++ libjava/java/lang/natClass.cc | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 10b48df1344..b832f796fed 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,7 @@ +2006-04-24 Tom Tromey + + * java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip . + 2006-04-21 Andrew Haley * include/execution.h (struct _Jv_CompiledEngine): Define for diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 38a9aff4a0b..d88835019f4 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -1182,9 +1182,14 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index, if (!klass->isInterface ()) return false; - int i = klass->method_count; - while (--i >= 0) + int max = klass->method_count; + int offset = 0; + for (int i = 0; i < max; ++i) { + // Skip here, as it will not be in the IDT. + if (klass->methods[i].name->first() == '<') + continue; + if (_Jv_equalUtf8Consts (klass->methods[i].name, utf_name) && _Jv_equalUtf8Consts (klass->methods[i].signature, utf_sig)) { @@ -1197,9 +1202,11 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index, found_class = klass; // Interface method indexes count from 1. - index = i+1; + index = offset + 1; return true; } + + ++offset; } } @@ -1211,8 +1218,8 @@ _Jv_getInterfaceMethod (jclass search_class, jclass &found_class, int &index, { using namespace java::lang::reflect; bool found = _Jv_getInterfaceMethod (search_class->interfaces[i], - found_class, index, - utf_name, utf_sig); + found_class, index, + utf_name, utf_sig); if (found) return true; } -- 2.11.0