For some reason my spouse and I wanted to get pyobjc working with gnustep. I think I found a bug in the objc2 runtime... with "Method * class_copyMethodList(Class cls, unsigned int *outCount)".
Where pyobjc is using it like so "pyobjc/pyobjc-core/Modules/objc/objc-class.m::metaclass_dir : 1102"
while (cls != NULL) {
/* Now add all method names */
methods = class_copyMethodList(object_getClass(cls), &method_count);
for (i = 0; i < method_count; i++) {
What's happening is "pyobjc" is not clearing out the "method_count" before calling the function. When "class_copyMethodList" returns NULL for the methods, the method_count contains the stack garbage from the previous call to the function...
I can fix it in pyobjc by clearing the method_count before all the calls, but I suspect that the libobjc::runtime.c should be clearing the value before doing the "CHECK_ARG" call.
I will be happy to fork the github repos, make the fix, do a push, then submit a pull request.
Alexandra