Fixed object_is_class and object_is_metaclass
authorNicola Pero <n.pero@mi.flashnet.it>
Mon, 16 Jul 2001 11:36:24 +0000 (13:36 +0200)
committerNicola Pero <nicola@gcc.gnu.org>
Mon, 16 Jul 2001 11:36:24 +0000 (11:36 +0000)
From-SVN: r44039

libobjc/ChangeLog
libobjc/objc/objc-api.h

index 6cde604ed483b13488fcccff1c2213c1315d04b8..da205a15df01b7caf6325b18396488da9f6ef60e 100644 (file)
@@ -1,3 +1,10 @@
+Mon Jul 16 12:15:00 2001  Nicola Pero  <n.pero@mi.flashnet.it>
+
+       * objc/objc-api.h (object_is_class): Fixed - buggy code was trying
+       to cast an id to a Class, which can not be done.  Make the check
+       by using CLS_ISMETA on the class pointer instead.
+       (object_is_meta_class): Similar fix.
+
 2001-06-09  Alexandre Oliva  <aoliva@redhat.com>, Stephen L Moshier  <moshier@mediaone.net>
 
        * configure.in (AC_EXEEXT): Work around in case it expands to
index d3e22f2088d5b975aeaed5f3065d4cc1a6e217b7..d0e3bb7fefb7112e407e1abcfe785a3e353a541c 100644 (file)
@@ -578,21 +578,23 @@ object_get_super_class
 }
 
 static inline BOOL
-object_is_class(id object)
+object_is_class (id object)
 {
-  return CLS_ISCLASS((Class)object);
+  return ((object != nil)  &&  CLS_ISMETA (object->class_pointer));
 }
-
 static inline BOOL
-object_is_instance(id object)
+object_is_instance (id object)
 {
-  return (object!=nil)&&CLS_ISCLASS(object->class_pointer);
+  return ((object != nil)  &&  CLS_ISCLASS (object->class_pointer));
 }
 
 static inline BOOL
-object_is_meta_class(id object)
+object_is_meta_class (id object)
 {
-  return CLS_ISMETA((Class)object);
+  return ((object != nil)
+         &&  !object_is_instance (object)  
+         &&  !object_is_class (object));
 }
 
 struct sarray*