From bd9e478b7bf1d58699a89bfa8f518d500f264dcb Mon Sep 17 00:00:00 2001 From: CaS Date: Tue, 18 Feb 2003 11:43:57 +0000 Subject: [PATCH] Patch to permit null selectors git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@15995 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/NSObject.m | 33 ++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index e3d93694a..ac6ed485c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-02-18 Richard Frith-Macdonald + + * NSObject.m: ([+instancesRespondToSelector:]),([-respondsToSelector]) + Return NO when given a null selector unless in MacOS-X compatibility + mode. rewritten from patch by Willem Rein Oudshoorn. + 2003-02-16 Adam Fedor * Version 1.5.2 diff --git a/Source/NSObject.m b/Source/NSObject.m index ed095d260..f95a39e5b 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -1124,18 +1124,22 @@ static BOOL double_release_check_enabled = NO; * where a subclass implements -forwardInvocation: to respond to * selectors not normally handled ... in these cases the subclass * may override this method to handle it. - *
Raises NSInvalidArgumentException if given a null selector. + *
If given a null selector, raises NSInvalidArgumentException when + * in MacOS-X compatibility more, or returns NO otherwise. */ + (BOOL) instancesRespondToSelector: (SEL)aSelector { if (aSelector == 0) - [NSException raise: NSInvalidArgumentException - format: @"%@ null selector given", NSStringFromSelector(_cmd)]; -#if 0 - return (class_get_instance_method(self, aSelector) != METHOD_NULL); -#else + { + if (GSUserDefaultsFlag(GSMacOSXCompatible)) + { + [NSException raise: NSInvalidArgumentException + format: @"%@ null selector given", + NSStringFromSelector(_cmd)]; + } + return NO; + } return __objc_responds_to((id)&self, aSelector); -#endif } /** @@ -1659,14 +1663,21 @@ static BOOL double_release_check_enabled = NO; * where a subclass implements -forwardInvocation: to respond to * selectors not normally handled ... in these cases the subclass * may override this method to handle it. - *
Raises NSInvalidArgumentException if given a null selector. + *
If given a null selector, raises NSInvalidArgumentException when + * in MacOS-X compatibility more, or returns NO otherwise. */ - (BOOL) respondsToSelector: (SEL)aSelector { if (aSelector == 0) - [NSException raise: NSInvalidArgumentException - format: @"%@ null selector given", NSStringFromSelector(_cmd)]; - + { + if (GSUserDefaultsFlag(GSMacOSXCompatible)) + { + [NSException raise: NSInvalidArgumentException + format: @"%@ null selector given", + NSStringFromSelector(_cmd)]; + } + return NO; + } return __objc_responds_to(self, aSelector); }