diff --git a/Source/NSArray.m b/Source/NSArray.m index 117a9cd9a..fa5694cc4 100644 --- a/Source/NSArray.m +++ b/Source/NSArray.m @@ -794,9 +794,20 @@ compare(id elem1, id elem2, void* context) { NSComparisonResult (*imp)(id, SEL, id); + if (context == 0) + [NSException raise: NSInvalidArgumentException + format: @"compare null selector given"]; + imp = (NSComparisonResult (*)(id, SEL, id)) [elem1 methodForSelector: context]; + if (imp == NULL) + { + [NSException raise: NSGenericException + format: @"invalid selector passed to compare"]; + return 0; + } + return (*imp)(elem1, context, elem2); }