diff --git a/BloodMagic/Sources/Modules/Core/Private/Collectors/BMClassCollector.mm b/BloodMagic/Sources/Modules/Core/Private/Collectors/BMClassCollector.mm index 543935c..146bb20 100644 --- a/BloodMagic/Sources/Modules/Core/Private/Collectors/BMClassCollector.mm +++ b/BloodMagic/Sources/Modules/Core/Private/Collectors/BMClassCollector.mm @@ -40,25 +40,14 @@ - (void)dealloc - (void)collectClasses { -#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED - uint classesCount; - const char *imageName = class_getImageName(object_getClass(self)); - const char **classNames = objc_copyClassNamesForImage(imageName, &classesCount); - for (uint index = 0; index < classesCount; index++) { - Class nextClass = objc_getClass(classNames[index]); - _cachedClasses.push_back(nextClass); - } - free(classNames); -#else Class parentClass = [NSObject class]; + int numClasses = objc_getClassList(NULL, 0); - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wvla-extension" - Class classes[sizeof(Class) * numClasses]; -#pragma clang diagnostic pop - + if (numClasses == 0) return; + + Class *classes = (Class *)malloc(sizeof(Class) * numClasses); numClasses = objc_getClassList(classes, numClasses); + for (NSInteger i = 0; i < numClasses; i++) { Class superClass = classes[i]; do { @@ -76,7 +65,7 @@ - (void)collectClasses } _cachedClasses.push_back(klass); } -#endif + free(classes); } - (class_list_t *)collectForProtocol:(Protocol *)protocol