Author: rfm
Date: Wed Mar 19 10:38:40 2014
New Revision: 37758
URL: http://svn.gna.org/viewcvs/gnustep?rev=37758&view=rev
Log:
patch by Mathias Bauer <[email protected]>
Modified:
libs/base/trunk/ChangeLog
libs/base/trunk/Source/Additions/GSObjCRuntime.m
libs/base/trunk/Tests/base/KVC/basic.m
Modified: libs/base/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/ChangeLog?rev=37758&r1=37757&r2=37758&view=diff
==============================================================================
--- libs/base/trunk/ChangeLog (original)
+++ libs/base/trunk/ChangeLog Wed Mar 19 10:38:40 2014
@@ -6,6 +6,8 @@
* Source/NSData.m:
* Source/NSString.m:
Fix for bug #41626
+ * Source/Additions/GSObjCRuntime.m: patch by Mathias Bauer
+ for bool encoding/decoding.
2014-03-11 Richard Frith-Macdonald <[email protected]>
Modified: libs/base/trunk/Source/Additions/GSObjCRuntime.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/Additions/GSObjCRuntime.m?rev=37758&r1=37757&r2=37758&view=diff
==============================================================================
--- libs/base/trunk/Source/Additions/GSObjCRuntime.m (original)
+++ libs/base/trunk/Source/Additions/GSObjCRuntime.m Wed Mar 19 10:38:40 2014
@@ -1090,6 +1090,25 @@
}
break;
+ case _C_BOOL:
+ {
+ bool v;
+
+ if (sel == 0)
+ {
+ v = *(bool *)((char *)self + offset);
+ }
+ else
+ {
+ bool (*imp)(id, SEL) =
+ (bool (*)(id, SEL))[self methodForSelector: sel];
+
+ v = (*imp)(self, sel);
+ }
+ val = [NSNumber numberWithBool: v];
+ }
+ break;
+
case _C_SHT:
{
short v;
@@ -1534,6 +1553,26 @@
}
break;
+ case _C_BOOL:
+ {
+ bool v = [val boolValue];
+
+ if (sel == 0)
+ {
+ bool *ptr = (bool*)((char *)self + offset);
+
+ *ptr = v;
+ }
+ else
+ {
+ void (*imp)(id, SEL, bool) =
+ (void (*)(id, SEL, bool))[self methodForSelector: sel];
+
+ (*imp)(self, sel, v);
+ }
+ }
+ break;
+
case _C_SHT:
{
short v = [val shortValue];
Modified: libs/base/trunk/Tests/base/KVC/basic.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Tests/base/KVC/basic.m?rev=37758&r1=37757&r2=37758&view=diff
==============================================================================
--- libs/base/trunk/Tests/base/KVC/basic.m (original)
+++ libs/base/trunk/Tests/base/KVC/basic.m Wed Mar 19 10:38:40 2014
@@ -20,6 +20,7 @@
int num4;
TestClass *child;
myStruct s;
+ bool b;
}
- (void) setNum3:(int) num;
@@ -165,6 +166,7 @@
UndefinedKey2 *undefinedKey2 = [[[UndefinedKey2 alloc] init] autorelease];
NSNumber *n = [NSNumber numberWithInt:8];
+ NSNumber *nb = [NSNumber numberWithBool:1];
NSNumber *adjustedN = [NSNumber numberWithInt:7];
NSNumber *n2 = [NSNumber numberWithDouble:87.999];
@@ -181,6 +183,10 @@
PASS(rc + 1 == [m retainCount], "KVC retains object values");
}
+ [tester setValue:nb forKey: @"b"];
+ PASS([[tester valueForKey: @"b"] isEqualToNumber:nb],
+ "KVC works with bool");
+
[tester setValue:n forKey: @"num1"];
PASS([[tester valueForKey: @"num1"] isEqualToNumber:n],
"KVC works with ints");
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs