Index: src/OFObject.h ================================================================== --- src/OFObject.h +++ src/OFObject.h @@ -942,9 +942,10 @@ #ifdef __cplusplus extern "C" { #endif extern id of_alloc_object(Class class_, size_t extraSize, size_t extraAlignment, void **extra); +extern void OF_NO_RETURN of_method_not_found(id self, SEL _cmd); extern uint32_t of_hash_seed; #ifdef __cplusplus } #endif Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -122,11 +122,11 @@ enumerationMutationHandler(id object) { @throw [OFEnumerationMutationException exceptionWithObject: object]; } -void +void OF_NO_RETURN of_method_not_found(id obj, SEL sel) { [obj doesNotRecognizeSelector: sel]; /* @@ -134,11 +134,11 @@ * never return. */ abort(); } -void +void OF_NO_RETURN of_method_not_found_stret(void *st, id obj, SEL sel) { of_method_not_found(obj, sel); } Index: src/macros.h ================================================================== --- src/macros.h +++ src/macros.h @@ -294,13 +294,11 @@ fprintf(stderr, "Failed to ensure condition in " \ __FILE__ ":%d:\n" #cond "\n", __LINE__); \ abort(); \ } -#define OF_UNRECOGNIZED_SELECTOR \ - [self doesNotRecognizeSelector: _cmd]; \ - OF_UNREACHABLE +#define OF_UNRECOGNIZED_SELECTOR of_method_not_found(self, _cmd); #define OF_INVALID_INIT_METHOD \ @try { \ [self doesNotRecognizeSelector: _cmd]; \ } @catch (id e) { \ [self release]; \