git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30263 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2010-04-30 07:30:27 +00:00
parent 2057a4b58f
commit 25b1c8549e
2 changed files with 37 additions and 23 deletions

View file

@ -1,3 +1,8 @@
2010-04-30 Richard Frith-Macdonald <rfm@gnu.org>
* Source/Additions/GSObjCRuntime.m:
Attempt fix for bug #29720
2010-04-26 Wolfgang Lux <wolfgang.lux@gmail.com>
* Source/NSObject.m (GSAtomicIncrement, GSAtomicDecrement): Use

View file

@ -1742,21 +1742,25 @@ NSArray *GSObjCAllSubclassesOfClass(Class cls)
}
else
{
NSMutableArray *result = [[NSMutableArray alloc] init];
NSMutableArray *result;
Class *classes;
int numClasses;
int i;
#ifdef GNU_RUNTIME
Class aClass;
for (aClass = cls->subclass_list; aClass; aClass=aClass->sibling_class)
numClasses = objc_getClassList(NULL, 0);
classes = NSZoneMalloc(NSDefaultMallocZone(), numClasses*sizeof(Class));
result = [NSMutableArray array];
for (i = 0; i < numClasses; i++)
{
if (CLS_ISMETA(aClass))
continue;
[result addObject:aClass];
[result addObjectsFromArray: GSObjCAllSubclassesOfClass(aClass)];
Class c = classes[i];
if (YES == GSObjCIsKindOf(cls, c) && cls != c)
{
[result addObject: c];
}
}
#else
#warning not implemented for the NeXT_RUNTIME
#endif
return AUTORELEASE(result);
NSZoneFree(NSDefaultMallocZone(), classes);
return result;
}
}
@ -1770,20 +1774,25 @@ NSArray *GSObjCDirectSubclassesOfClass(Class cls)
}
else
{
NSMutableArray *result=[[NSMutableArray alloc] init];
Class aClass;
NSMutableArray *result;
Class *classes;
int numClasses;
int i;
#ifdef GNU_RUNTIME
for (aClass = cls->subclass_list;aClass;aClass=aClass->sibling_class)
numClasses = objc_getClassList(NULL, 0);
classes = NSZoneMalloc(NSDefaultMallocZone(), numClasses*sizeof(Class));
result = [NSMutableArray array];
for (i = 0; i < numClasses; i++)
{
if (CLS_ISMETA(aClass))
continue;
[result addObject:aClass];
Class c = classes[i];
if (class_getSuperclass(c) == cls)
{
[result addObject: c];
}
}
#else
#warning not implemented for the NeXT_RUNTIME
#endif
return AUTORELEASE(result);
NSZoneFree(NSDefaultMallocZone(), classes);
return result;
}
}