Minor fixes

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@10674 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
CaS 2001-08-10 06:39:29 +00:00
parent a0ef32c1ec
commit 7d4e3075ea
3 changed files with 131 additions and 108 deletions

View file

@ -37,7 +37,7 @@
inv = [NSInvocation invocationWithMethodSignature: sig]; \
[inv setSelector: @selector(_SELX)]; \
[inv setTarget: self]; \
[inv setArgument: (void*)&_ARG1 atIndex: 2]; \
[inv setArgument: (void*)&_ARG1 atIndex: 2]; \
[self forwardInvocation: inv]; \
[inv getReturnValue: &m]
@ -773,6 +773,24 @@ enum
}
else
{
/*
* Evil hack to prevent recursion - if we are asking a remote
* object for a method signature, we can't ask it for the
* signature of methodSignatureForSelector:, so we hack in
* the signature required manually :-(
*/
if (sel_eq(aSelector, _cmd))
{
static NSMethodSignature *sig = nil;
if (sig == nil)
{
sig = [NSMethodSignature signatureWithObjCTypes: "@@::"];
RETAIN(sig);
}
return sig;
}
if (_protocol != nil)
{
const char *types = 0;
@ -799,28 +817,10 @@ enum
id m;
const char *types;
#ifdef USE_FFCALL
/*
* Evil hack to prevent recursion - if we are asking a remote
* object for a method signature, we can't ask it for the
* signature of methodSignatureForSelector:, so we hack in
* the signature required manually :-(
*/
if (sel_eq(aSelector, _cmd))
{
static NSMethodSignature *sig = nil;
id inv;
id sig;
if (sig == nil)
{
sig = [NSMethodSignature signatureWithObjCTypes: "@@::"];
RETAIN(sig);
}
return sig;
}
else
{
id inv, sig;
DO_FORWARD_INVOCATION(methodSignatureForSelector:, aSelector);
}
DO_FORWARD_INVOCATION(methodSignatureForSelector:, aSelector);
#else
arglist_t args;
void *retframe;
@ -838,7 +838,6 @@ enum
m = retframe_id(retframe);
#endif
types = [m methodType];
return [NSMethodSignature signatureWithObjCTypes: types];
}
}