From e85975a36ef6c729cc4efd7b75dfcf58060e0726 Mon Sep 17 00:00:00 2001 From: theraven Date: Sat, 13 Mar 2010 20:30:30 +0000 Subject: [PATCH] Don't make NSObject a subclass of NSObject. Thanks to Truls Becken! --- class_table.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/class_table.c b/class_table.c index 8c5e2f8..b6fcb6b 100644 --- a/class_table.c +++ b/class_table.c @@ -117,12 +117,16 @@ void objc_resolve_class(Class cls) cls->super_class = super; cls->class_pointer->super_class = super->class_pointer; } - // Set up the class links - cls->sibling_class = super->subclass_list; - super->subclass_list = cls; - // Set up the metaclass links - cls->class_pointer->sibling_class = superMeta->subclass_list; - superMeta->subclass_list = cls->class_pointer; + // Don't make the root class a subclass of itself + if (cls != super) + { + // Set up the class links + cls->sibling_class = super->subclass_list; + super->subclass_list = cls; + // Set up the metaclass links + cls->class_pointer->sibling_class = superMeta->subclass_list; + superMeta->subclass_list = cls->class_pointer; + } // Mark this class (and its metaclass) as resolved CLS_SETRESOLV(cls); CLS_SETRESOLV(cls->class_pointer);