Re-instate change from svn revision 31412 (just trusting it's OK).

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31502 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2010-10-12 11:55:04 +00:00
parent 33b8372877
commit 2b93292fc1
2 changed files with 29 additions and 0 deletions

View file

@ -1,3 +1,11 @@
2010-10-12 David Chisnall <theraven@gna.org>
* Source/Additions/GSObjCRuntime.m:
Add special case to KVC accessors for libobjc2: If there is a method
with the wrong types, try calling the method with the correct types.
This enables the TDD-fixup code to run and generate a KVC-compliant
version of an existing method.
2010-10-12 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSURL.m: Exactly match the percent escaping used by OSX.

View file

@ -59,6 +59,9 @@
#ifndef NeXT_RUNTIME
#include <pthread.h>
#endif
#ifdef __GNUSTEP_RUNTIME__
extern struct objc_slot *objc_get_slot(Class, SEL);
#endif
#ifdef NeXT_Foundation_LIBRARY
@interface NSObject (MissingFromMacOSX)
@ -1308,6 +1311,24 @@ GSObjCGetVal(NSObject *self, const char *key, SEL sel,
break;
default:
#ifdef __GNUSTEP_RUNTIME__
{
Class cls;
struct objc_slot *type_slot;
SEL typed;
struct objc_slot *slot;
cls = [self class];
type_slot = objc_get_slot(cls, @selector(retain));
typed = sel_registerTypedName_np(sel_getName(sel),
type_slot->types);
slot = objc_get_slot(cls, typed);
if (strcmp(slot->types, type_slot->types) == 0)
{
return slot->method(self, typed);
}
}
#endif
val = [self valueForUndefinedKey:
[NSString stringWithUTF8String: key]];
}