diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-06 08:38:36 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-06 08:38:36 +0000 |
commit | 1f6a7c18f59a0547bd11a9b355376d2d6fd6e406 (patch) | |
tree | b10e8c244ec13de3d040be68d34504ef19fdbf2a | |
parent | 534388dd1795b9122a70b4722fd0e3c9f73dc569 (diff) | |
download | ruby-1f6a7c18f59a0547bd11a9b355376d2d6fd6e406.tar.gz |
* ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438.
check with LONG_MAX and cast as long; without this the calculation
will be done as int and overflow.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ext/date/date_core.c | 4 |
2 files changed, 8 insertions, 2 deletions
@@ -1,3 +1,9 @@ +Fri May 6 16:27:33 2011 NARUSE, Yui <naruse@ruby-lang.org> + + * ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438. + check with LONG_MAX and cast as long; without this the calculation + will be done as int and overflow. + Fri May 6 15:01:11 2011 URABE Shyouhei <shyouhei@ruby-lang.org> * ext/syck/rubyext.c (mktime_do): avoid buffer overrun, by diff --git a/ext/date/date_core.c b/ext/date/date_core.c index 84338c4eff..73d0b55347 100644 --- a/ext/date/date_core.c +++ b/ext/date/date_core.c @@ -42,8 +42,8 @@ #define DAY_IN_SECONDS 86400 #define SECOND_IN_NANOSECONDS 1000000000 -#if (ULONG_MAX / DAY_IN_SECONDS) > SECOND_IN_NANOSECONDS -#define DAY_IN_NANOSECONDS LONG2NUM(DAY_IN_SECONDS * SECOND_IN_NANOSECONDS) +#if (LONG_MAX / DAY_IN_SECONDS) > SECOND_IN_NANOSECONDS +#define DAY_IN_NANOSECONDS LONG2NUM((long)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 |