[前][次][番号順一覧][スレッド一覧]

ruby-changes:19398

From: nobu <ko1@a...>
Date: Thu, 5 May 2011 22:23:45 +0900 (JST)
Subject: [ruby-changes:19398] Ruby:r31438 (trunk): * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not

nobu	2011-05-05 22:09:42 +0900 (Thu, 05 May 2011)

  New Revision: 31438

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31438

  Log:
    * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
      available on all platforms.

  Modified files:
    trunk/ChangeLog
    trunk/ext/date/date_core.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 31437)
+++ ChangeLog	(revision 31438)
@@ -1,3 +1,8 @@
+Thu May  5 22:09:39 2011  Nobuyoshi Nakada  <nobu@r...>
+
+	* ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
+	  available on all platforms.
+
 Thu May  5 17:36:31 2011  CHIKANAGA Tomoyuki  <nagachika00@g...>
 
 	* eval.c (frame_func_id): store result of method_entry_of_iseq() to
Index: ext/date/date_core.c
===================================================================
--- ext/date/date_core.c	(revision 31437)
+++ ext/date/date_core.c	(revision 31438)
@@ -42,7 +42,13 @@
 
 #define DAY_IN_SECONDS 86400
 #define SECOND_IN_NANOSECONDS 1000000000
-#define DAY_IN_NANOSECONDS 86400000000000LL
+#if (ULONG_MAX / DAY_IN_SECONDS) > SECOND_IN_NANOSECONDS
+#define DAY_IN_NANOSECONDS LONG2NUM(DAY_IN_SECONDS * SECOND_IN_NANOSECONDS)
+#elif defined HAVE_LONG_LONG
+#define DAY_IN_NANOSECONDS LL2NUM((LONG_LONG)DAY_IN_SECONDS * SECOND_IN_NANOSECONDS)
+#else
+#define DAY_IN_NANOSECONDS f_mul(INT2FIX(DAY_IN_SECONDS), INT2FIX(SECOND_IN_NANOSECONDS))
+#endif
 
 /* copied from time.c */
 #define NDIV(x,y) (-(-((x)+1)/(y))-1)
@@ -4584,7 +4590,7 @@
 
     rzero = rb_rational_new1(INT2FIX(0));
     rhalf = rb_rational_new2(INT2FIX(1), INT2FIX(2));
-    day_in_nanoseconds = rb_ll2inum(DAY_IN_NANOSECONDS);
+    day_in_nanoseconds = DAY_IN_NANOSECONDS;
 
     rb_gc_register_mark_object(rzero);
     rb_gc_register_mark_object(rhalf);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]