| /* Contributed by Nicola Pero - Tue Jul 3 10:55:21 BST 2001 */ |
| |
| #include "../../objc-obj-c++-shared/runtime.h" |
| #include "../../objc-obj-c++-shared/TestsuiteObject.m" |
| |
| /* This test demonstrate a failure in object_is_class which was fixed */ |
| |
| /* Create a class whose instance variables mirror the struct used for |
| Class structures in the runtime ... yes we're feeling evil today */ |
| @interface EvilClass : TestsuiteObject |
| { |
| Class super_class; |
| const char* name; |
| long version; |
| unsigned long info; |
| } |
| @end |
| |
| @implementation EvilClass |
| - (id) init |
| { |
| self = [super init]; |
| /* The following one is used in the runtime to mark classes */ |
| info = 0x1L; |
| return self; |
| } |
| @end |
| |
| int main (void) |
| { |
| /* Create an object of our EvilClass */ |
| EvilClass *evilObject = [EvilClass new]; |
| |
| /* Now check that the object is not a class object */ |
| if (class_isMetaClass (object_getClass (evilObject))) |
| { |
| printf ("object_is_class failed\n"); |
| abort (); |
| } |
| |
| return 0; |
| } |