diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 3 | ||||
-rw-r--r-- | vsnprintf.c | 2 |
3 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org> + + * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t. + patched by Peter Weldon <peter.weldon AT null.net> + [ruby-core:33985] + Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com> * Makefile.in: remove unnecessary semicolons. diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 8c96a0d2cd..ec5395092f 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -634,6 +634,9 @@ class TestTime < Test::Unit::TestCase t.strftime("%m/%d/%Y %l:%M:%S.%9N")) assert_equal("03/14/1592 6:53:58.97932384", t.strftime("%m/%d/%Y %l:%M:%S.%8N")) + + # [ruby-core:33985] + assert_equal("3000000000", Time.at(3000000000).strftime('%s')) end def test_delegate diff --git a/vsnprintf.c b/vsnprintf.c index 7576b4c5b4..648904f795 100644 --- a/vsnprintf.c +++ b/vsnprintf.c @@ -368,7 +368,7 @@ static char * BSD__uqtoa(register u_quad_t val, char *endp, int base, int octzero, const char *xdigs) { register char *cp = endp; - register long sval; + register quad_t sval; /* * Handle the three cases separately, in the hope of getting |