mirror of
https://github.com/gnustep/libs-base.git
synced 2025-06-01 17:12:03 +00:00
Fix invocation breakage.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30606 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
04f3016872
commit
122c4b087a
3 changed files with 15 additions and 12 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2010-06-07 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Source/GSFFIInvocation.m: Fix breakage caused by David's changes.
|
||||||
|
* Source/ObjectiveC2/runtime.m: Fix handling of nul arguments in
|
||||||
|
class_sespondsToSelector().
|
||||||
|
|
||||||
2010-06-05 Richard Frith-Macdonald <rfm@gnu.org>
|
2010-06-05 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* Tools/Makefile.postamble: Fix breakage of instalation of gdomap
|
* Tools/Makefile.postamble: Fix breakage of instalation of gdomap
|
||||||
|
|
|
@ -22,8 +22,6 @@
|
||||||
Boston, MA 02111 USA.
|
Boston, MA 02111 USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define class_pointer isa
|
|
||||||
|
|
||||||
#import "common.h"
|
#import "common.h"
|
||||||
#define EXPOSE_NSInvocation_IVARS 1
|
#define EXPOSE_NSInvocation_IVARS 1
|
||||||
#import "Foundation/NSException.h"
|
#import "Foundation/NSException.h"
|
||||||
|
@ -147,21 +145,18 @@ static IMP gs_objc_msg_forward2 (id receiver, SEL sel)
|
||||||
ffi_closure *cclosure;
|
ffi_closure *cclosure;
|
||||||
NSMethodSignature *sig;
|
NSMethodSignature *sig;
|
||||||
GSCodeBuffer *memory;
|
GSCodeBuffer *memory;
|
||||||
|
Class c;
|
||||||
|
|
||||||
if (class_respondsToSelector(receiver->isa, sel) ||
|
c = object_getClass(receiver);
|
||||||
(class_respondsToSelector(receiver->isa, @selector(respondsToSelector:))
|
if (class_respondsToSelector(c, sel)
|
||||||
&& [receiver respondsToSelector: sel]))
|
|| (class_respondsToSelector(c, @selector(respondsToSelector:))
|
||||||
|
&& [receiver respondsToSelector: sel]))
|
||||||
{
|
{
|
||||||
sig = [receiver methodSignatureForSelector: sel];
|
sig = [receiver methodSignatureForSelector: sel];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
[NSException raise: NSInvalidArgumentException
|
sig = nil;
|
||||||
format: @"GSFFIInvocation: Class '%s'(%s) does not respond"
|
|
||||||
@" to forwardInvocation: for '%s'",
|
|
||||||
GSClassNameFromObject(receiver),
|
|
||||||
GSObjCIsInstance(receiver) ? "instance" : "class",
|
|
||||||
sel ? sel_getName(sel) : "(null)"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sig == nil)
|
if (sig == nil)
|
||||||
|
|
|
@ -518,7 +518,9 @@ class_replaceMethod(Class cls, SEL name, IMP imp, const char *types)
|
||||||
BOOL
|
BOOL
|
||||||
class_respondsToSelector(Class cls, SEL sel)
|
class_respondsToSelector(Class cls, SEL sel)
|
||||||
{
|
{
|
||||||
return __objc_responds_to((id) & cls, sel);
|
if (cls != 0 && sel != 0 && __objc_responds_to((id) & cls, sel) != 0)
|
||||||
|
return YES;
|
||||||
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue