===================================================================
@@ -31,7 +31,7 @@
#include "objc-private/hash.h"
#include "objc-private/objc-list.h"
#include "objc-private/module-abi-8.h"
-#include "objc-private/runtime.h"
+#include "objc-private/runtime.h" /* For __objc_resolve_class_links(). */
#include "objc-private/selector.h" /* For __sel_register_typed_name(). */
#include "objc-private/objc-sync.h" /* For __objc_sync_init() */
#include "objc-private/protocols.h" /* For __objc_protocols_init(),
@@ -719,11 +719,15 @@
objc_send_load ();
+ /* Check if there are no unresolved classes (ie, classes whose
+ superclass has not been loaded yet) and that the 'Object' class,
+ used as the class of classes, exist. If so, it is worth
+ "resolving the class links" at this point, which will setup all
+ the class/superclass pointers. */
+ if (!unresolved_classes && objc_getClass ("Object"))
+ __objc_resolve_class_links ();
+
objc_mutex_unlock (__objc_runtime_mutex);
-
- /* TODO: Do we need to add a call to __objc_resolve_class_links()
- here ? gnustep-base does it manually after it loads a module.
- Shouldn't we do it automatically ? */
}
static void
===================================================================
@@ -1,5 +1,10 @@
2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+ * init.c (__objc_exec_class): Call __objc_resolve_class_links (),
+ if appropriate, after loading the module.
+
+2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>
+
* sendmsg.c (method_setImplementation): Do not declare.
2010-12-19 Nicola Pero <nicola.pero@meta-innovation.com>