Minor fix

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@17111 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
CaS 2003-07-04 17:34:48 +00:00
parent 35c61adf2b
commit 996c1ebfb5
2 changed files with 8 additions and 5 deletions

View file

@ -3,6 +3,8 @@
* Source/NSDistributedNotificationCenter.m: Use -setProtocolForProxy: * Source/NSDistributedNotificationCenter.m: Use -setProtocolForProxy:
and implement dummy class to work around bug in old compilers. and implement dummy class to work around bug in old compilers.
* Tools/gdnc.m: ditto * Tools/gdnc.m: ditto
* Source/NSDistantObject.m: Fix for calls to remote system where we
can get no method signature.
2003-07-04 Richard Frith-Macdonald <rfm@gnu.org> 2003-07-04 Richard Frith-Macdonald <rfm@gnu.org>

View file

@ -35,14 +35,15 @@
#include "Foundation/NSObjCRuntime.h" #include "Foundation/NSObjCRuntime.h"
#include "Foundation/NSInvocation.h" #include "Foundation/NSInvocation.h"
#define DO_FORWARD_INVOCATION(_SELX, _ARG1) \ #define DO_FORWARD_INVOCATION(_SELX, _ARG1) ({ \
sig = [self methodSignatureForSelector: @selector(_SELX)]; \ sig = [self methodSignatureForSelector: @selector(_SELX)]; \
if (sig != nil) { \
inv = [NSInvocation invocationWithMethodSignature: sig]; \ inv = [NSInvocation invocationWithMethodSignature: sig]; \
[inv setSelector: @selector(_SELX)]; \ [inv setSelector: @selector(_SELX)]; \
[inv setTarget: self]; \ [inv setTarget: self]; \
[inv setArgument: (void*)&_ARG1 atIndex: 2]; \ [inv setArgument: (void*)&_ARG1 atIndex: 2]; \
[self forwardInvocation: inv]; \ [self forwardInvocation: inv]; \
[inv getReturnValue: &m] [inv getReturnValue: &m]; }})
static int debug_proxy = 0; static int debug_proxy = 0;
@ -842,7 +843,7 @@ enum
} }
else else
{ {
id m; id m = nil;
#ifdef USE_FFCALL #ifdef USE_FFCALL
id inv; id inv;
id sig; id sig;
@ -992,7 +993,7 @@ static inline BOOL class_is_kind_of (Class self, Class aClassObject)
- (BOOL) conformsToProtocol: (Protocol*)aProtocol - (BOOL) conformsToProtocol: (Protocol*)aProtocol
{ {
#ifdef USE_FFCALL #ifdef USE_FFCALL
BOOL m; BOOL m = NO;
id inv, sig; id inv, sig;
DO_FORWARD_INVOCATION(conformsToProtocol:, aProtocol); DO_FORWARD_INVOCATION(conformsToProtocol:, aProtocol);
return m; return m;
@ -1017,7 +1018,7 @@ static inline BOOL class_is_kind_of (Class self, Class aClassObject)
- (BOOL) respondsToSelector: (SEL)aSelector - (BOOL) respondsToSelector: (SEL)aSelector
{ {
#ifdef USE_FFCALL #ifdef USE_FFCALL
BOOL m; BOOL m = NO;
id inv, sig; id inv, sig;
DO_FORWARD_INVOCATION(respondsToSelector:, aSelector); DO_FORWARD_INVOCATION(respondsToSelector:, aSelector);
return m; return m;