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/