Differences From Artifact [ec4f3dc978]:
- File
src/OFObject.m
— part of check-in
[0322aa3168]
at
2011-08-03 03:38:05
on branch trunk
— Fix updating the dtable for the old GNU runtime.
Again, why does the old GNU runtime force us to fiddle with its internal
data structures instead of exporting functions? (user: js, size: 28738) [annotate] [blame] [check-ins using]
To Artifact [4d946cf26f]:
- File
src/OFObject.m
— part of check-in
[546332b4d7]
at
2011-08-03 03:53:03
on branch trunk
— Always use the old GNU API, even with the new GNU runtime.
The new API of the new GNU runtime is currently too broken to be of any
use, thus we even use the old API when the new one is detected until
the new one has been fixed and offers a way to detect if it is the fixed
one. (user: js, size: 28868) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #ifndef HAVE_OBJC_ENUMERATIONMUTATION void objc_enumerationMutation(id object) { enumeration_mutation_handler(object); } #endif const char* _NSPrintForDebugger(id object) { return [[object description] cString]; } | > > > > | 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #ifndef HAVE_OBJC_ENUMERATIONMUTATION void objc_enumerationMutation(id object) { enumeration_mutation_handler(object); } #endif #if defined(HAVE_OBJC_ENUMERATIONMUTATION) && defined(OF_OLD_GNU_RUNTIME) extern void objc_setEnumerationMutationHandler(void(*handler)(id)); #endif const char* _NSPrintForDebugger(id object) { return [[object description] cString]; } |
︙ | ︙ | |||
168 169 170 171 172 173 174 | if (!objc_properties_init()) { fputs("Runtime error: objc_properties_init() failed!\n", stderr); abort(); } #endif | | | 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | if (!objc_properties_init()) { fputs("Runtime error: objc_properties_init() failed!\n", stderr); abort(); } #endif #ifdef HAVE_OBJC_ENUMERATIONMUTATION objc_setEnumerationMutationHandler(enumeration_mutation_handler); #endif cxx_construct = sel_registerName(".cxx_construct"); cxx_destruct = sel_registerName(".cxx_destruct"); if (cxx_construct == NULL || cxx_destruct == NULL) { |
︙ | ︙ |