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

Reply via email to