natClass.cc (isInstance): Initialize `this'.

2000-03-21  Bryce McKinlay  <bryce@albatross.co.nz>

        * java/lang/natClass.cc (isInstance): Initialize `this'.
        (isAssignableFrom): Initialize `this' and `klass'.
        (_Jv_IsAssignableFrom): If an interface has no idt, it is not
        implemented by any loaded class, so return false.

From-SVN: r32663
This commit is contained in:
Bryce McKinlay 2000-03-21 05:12:20 +00:00 committed by Bryce McKinlay
parent 2ca2f317e2
commit a162f9d81e
2 changed files with 13 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2000-03-21 Bryce McKinlay <bryce@albatross.co.nz>
* java/lang/natClass.cc (isInstance): Initialize `this'.
(isAssignableFrom): Initialize `this' and `klass'.
(_Jv_IsAssignableFrom): If an interface has no idt, it is not
implemented by any loaded class, so return false.
2000-03-19 Warren Levy <warrenl@cygnus.com> 2000-03-19 Warren Levy <warrenl@cygnus.com>
* java/awt/Color.java: Specified java.io for Serializable. * java/awt/Color.java: Specified java.io for Serializable.

View file

@ -613,6 +613,9 @@ java::lang::Class::getMethods (void)
jboolean jboolean
java::lang::Class::isAssignableFrom (jclass klass) java::lang::Class::isAssignableFrom (jclass klass)
{ {
// Arguments may not have been initialized, given ".class" syntax.
_Jv_InitClass (this);
_Jv_InitClass (klass);
return _Jv_IsAssignableFrom (this, klass); return _Jv_IsAssignableFrom (this, klass);
} }
@ -621,6 +624,7 @@ java::lang::Class::isInstance (jobject obj)
{ {
if (! obj || isPrimitive ()) if (! obj || isPrimitive ())
return false; return false;
_Jv_InitClass (this);
return isAssignableFrom (obj->getClass()); return isAssignableFrom (obj->getClass());
} }
@ -919,6 +923,8 @@ _Jv_IsAssignableFrom (jclass target, jclass source)
{ {
_Jv_IDispatchTable *cl_idt = source->idt; _Jv_IDispatchTable *cl_idt = source->idt;
_Jv_IDispatchTable *if_idt = target->idt; _Jv_IDispatchTable *if_idt = target->idt;
if (if_idt == NULL)
return false; // No class implementing TARGET has been loaded.
jshort cl_iindex = cl_idt->cls.iindex; jshort cl_iindex = cl_idt->cls.iindex;
if (cl_iindex <= if_idt->iface.ioffsets[0]) if (cl_iindex <= if_idt->iface.ioffsets[0])
{ {
@ -927,7 +933,6 @@ _Jv_IsAssignableFrom (jclass target, jclass source)
&& cl_idt->cls.itable[offset] == target) && cl_idt->cls.itable[offset] == target)
return true; return true;
} }
return false;
} }
return false; return false;