* java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip <clinit>.

From-SVN: r113229
This commit is contained in:
Tom Tromey 2006-04-24 21:28:36 +00:00 committed by Tom Tromey
parent 9fff64328d
commit 0623a8c0c2
2 changed files with 16 additions and 5 deletions

View File

@ -1,3 +1,7 @@
2006-04-24 Tom Tromey <tromey@redhat.com>
* java/lang/natClass.cc (_Jv_getInterfaceMethod): Skip <clinit>.
2006-04-21 Andrew Haley <aph@redhat.com>
* include/execution.h (struct _Jv_CompiledEngine): Define for

View File

@ -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 <clinit> 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;
}