mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 23:25:24 +02:00
natClass.cc (_Jv_IsAssignableFrom): Checking the ancestors array is invalid for interfaces...
* java/lang/natClass.cc (_Jv_IsAssignableFrom): Checking the ancestors array is invalid for interfaces, so do that *after* check that the target type is not an interface. From-SVN: r40797
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2001-03-23 Per Bothner <per@bothner.com>
|
||||
|
||||
* java/lang/natClass.cc (_Jv_IsAssignableFrom): Checking the
|
||||
ancestors array is invalid for interfaces, so do that *after*
|
||||
check that the target type is not an interface.
|
||||
|
||||
2000-03-23 Jeff Sturm <jsturm@one-point.com>
|
||||
|
||||
* prims.cc (_Jv_FindClassFromSignature): Check return of
|
||||
|
||||
@@ -909,11 +909,8 @@ _Jv_LookupInterfaceMethodIdx (jclass klass, jclass iface, int method_idx)
|
||||
jboolean
|
||||
_Jv_IsAssignableFrom (jclass target, jclass source)
|
||||
{
|
||||
if (source == target
|
||||
|| (target == &ObjectClass && !source->isPrimitive())
|
||||
|| (source->ancestors != NULL
|
||||
&& source->ancestors[source->depth - target->depth] == target))
|
||||
return true;
|
||||
if (source == target)
|
||||
return true;
|
||||
|
||||
// If target is array, so must source be.
|
||||
if (target->isArray ())
|
||||
@@ -945,9 +942,15 @@ _Jv_IsAssignableFrom (jclass target, jclass source)
|
||||
&& cl_idt->cls.itable[offset] == target)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
if ((target == &ObjectClass && !source->isPrimitive())
|
||||
|| (source->ancestors != NULL
|
||||
&& source->ancestors[source->depth - target->depth] == target))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Interface type checking, the slow way. Returns TRUE if IFACE is a
|
||||
|
||||
Reference in New Issue
Block a user