Fixed potential load-order conflict in NSBlocks.

main
theraven 16 years ago
parent cbf41a1fec
commit 8efbf98e55

@ -11,9 +11,8 @@ struct objc_class _NSConcreteStackBlock;
void __objc_update_dispatch_table_for_class(Class); void __objc_update_dispatch_table_for_class(Class);
extern struct sarray *__objc_uninstalled_dtable; extern struct sarray *__objc_uninstalled_dtable;
extern objc_mutex_t __objc_runtime_mutex; extern objc_mutex_t __objc_runtime_mutex;
static void createNSBlockSubclass(Class newClass, char *name) static void createNSBlockSubclass(Class superclass, Class newClass, char *name)
{ {
Class superclass = [NSBlock class];
// Create the metaclass // Create the metaclass
Class metaClass = calloc(1, sizeof(struct objc_class)); Class metaClass = calloc(1, sizeof(struct objc_class));
@ -49,8 +48,8 @@ static void createNSBlockSubclass(Class newClass, char *name)
@implementation NSBlock @implementation NSBlock
+ (void)load + (void)load
{ {
createNSBlockSubclass(&_NSConcreteGlobalBlock, "_NSConcreteGlobalBlockPrivate"); createNSBlockSubclass(self, &_NSConcreteGlobalBlock, "_NSConcreteGlobalBlockPrivate");
createNSBlockSubclass(&_NSConcreteStackBlock, "_NSConcreteStackBlockPrivate"); createNSBlockSubclass(self, &_NSConcreteStackBlock, "_NSConcreteStackBlockPrivate");
} }
@end @end

Loading…
Cancel
Save