OSDN Git Service

Fixed object_is_class and object_is_metaclass
authornicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Jul 2001 11:36:24 +0000 (11:36 +0000)
committernicola <nicola@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 Jul 2001 11:36:24 +0000 (11:36 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44039 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 6cde604..da205a1 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 d3e22f2..d0e3bb7 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*