Author: rfm
Date: Tue Mar 15 20:04:51 2016
New Revision: 39549

URL: http://svn.gna.org/viewcvs/gnustep?rev=39549&view=rev
Log:
on 32bit systems constrain dates to fit

Modified:
    libs/base/trunk/Source/NSCalendarDate.m
    libs/base/trunk/Source/NSDate.m
    libs/base/trunk/Tests/base/NSCalendarDate/test03.m
    libs/base/trunk/Tests/base/NSException/basic.m

Modified: libs/base/trunk/Source/NSCalendarDate.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/NSCalendarDate.m?rev=39549&r1=39548&r2=39549&view=diff
==============================================================================
--- libs/base/trunk/Source/NSCalendarDate.m     (original)
+++ libs/base/trunk/Source/NSCalendarDate.m     Tue Mar 15 20:04:51 2016
@@ -62,6 +62,9 @@
 @interface     NSGDate : NSObject      // Help the compiler
 @end
 
+
+#define DISTANT_FUTURE 63113990400.0
+#define DISTANT_PAST   -63113817600.0
 
 static NSString        *cformat = @"%Y-%m-%d %H:%M:%S %z";
 
@@ -1620,6 +1623,16 @@
                  format: @"[%@-%@] interval is not a number",
        NSStringFromClass([self class]), NSStringFromSelector(_cmd)];
     }
+#if    GS_SIZEOF_VOIDP == 4
+  if (seconds <= DISTANT_PAST)
+    {
+      seconds = DISTANT_PAST;
+    }
+  else if (seconds >= DISTANT_FUTURE)
+    {
+      seconds = DISTANT_FUTURE;
+    }
+#endif
   _seconds_since_ref = seconds;
   if (_calendar_format == nil)
     {

Modified: libs/base/trunk/Source/NSDate.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/NSDate.m?rev=39549&r1=39548&r2=39549&view=diff
==============================================================================
--- libs/base/trunk/Source/NSDate.m     (original)
+++ libs/base/trunk/Source/NSDate.m     Tue Mar 15 20:04:51 2016
@@ -1412,6 +1412,18 @@
                  format: @"[%@-%@] interval is not a number",
        NSStringFromClass([self class]), NSStringFromSelector(_cmd)];
     }
+
+#if    GS_SIZEOF_VOIDP == 4
+  if (secs <= DISTANT_PAST)
+    {
+      secs = DISTANT_PAST;
+    }
+  else if (secs >= DISTANT_FUTURE)
+    {
+      secs = DISTANT_FUTURE;
+    }
+#endif
+
   _seconds_since_ref = secs;
   return self;
 }

Modified: libs/base/trunk/Tests/base/NSCalendarDate/test03.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Tests/base/NSCalendarDate/test03.m?rev=39549&r1=39548&r2=39549&view=diff
==============================================================================
--- libs/base/trunk/Tests/base/NSCalendarDate/test03.m  (original)
+++ libs/base/trunk/Tests/base/NSCalendarDate/test03.m  Tue Mar 15 20:04:51 2016
@@ -37,12 +37,22 @@
 {
   CREATE_AUTORELEASE_POOL(arp);
 
-  PASS_EQUAL(formattedDaysSince1970(8640000000), @"17-07-23657486",
-   "format date for 8640000000");
+  if (sizeof(NSInteger) == 4)
+    {
+      PASS_EQUAL(formattedDaysSince1970(8640000000), @"02-01-4001",
+       "format date for 8640000000");
 
-  PASS_EQUAL(formattedDaysSince1970(2147483651), @"15-07-5881580",
-   "format date for 2147483651");
+      PASS_EQUAL(formattedDaysSince1970(2147483651), @"02-01-4001",
+       "format date for 2147483651");
+    }
+  else
+    {
+      PASS_EQUAL(formattedDaysSince1970(8640000000), @"17-07-23657486",
+       "format date for 8640000000");
 
+      PASS_EQUAL(formattedDaysSince1970(2147483651), @"15-07-5881580",
+       "format date for 2147483651");
+    }
   DESTROY(arp);
   return 0;
 }

Modified: libs/base/trunk/Tests/base/NSException/basic.m
URL: 
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Tests/base/NSException/basic.m?rev=39549&r1=39548&r2=39549&view=diff
==============================================================================
--- libs/base/trunk/Tests/base/NSException/basic.m      (original)
+++ libs/base/trunk/Tests/base/NSException/basic.m      Tue Mar 15 20:04:51 2016
@@ -46,6 +46,7 @@
       NSEnumerator *e = [a objectEnumerator];
       NSString  *s = nil;
 
+NSLog(@"Got %@", a);
       while ((s = [e nextObject]) != nil)
         if ([s rangeOfString: @"testAbc"].length > 0)
           break;


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to