From 1950c1ce6c43449017abf9e3d3310ee4892d9a95 Mon Sep 17 00:00:00 2001 From: akr Date: Thu, 28 Mar 2013 21:49:55 +0000 Subject: * numeric.c (rb_num2ull): Cast double to unsigned LONG_LONG via LONG_LONG instead of double to unsigned LONG_LONG directly. This is a challenge to fix a test_num2ull(TestNum2int) failure (NUM2ULL(-1.0) should be "18446744073709551615" but was "0") on Mac OS X with 32bit clang. http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-trunk-m32-o0/log/20130328T191100Z.diff.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 9 +++++++++ numeric.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index f6b6e3fa80..4a4d390008 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Fri Mar 29 06:39:42 2013 Tanaka Akira + + * numeric.c (rb_num2ull): Cast double to unsigned LONG_LONG via + LONG_LONG instead of double to unsigned LONG_LONG directly. + This is a challenge to fix a test_num2ull(TestNum2int) + failure (NUM2ULL(-1.0) should be "18446744073709551615" but was "0") + on Mac OS X with 32bit clang. + http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-trunk-m32-o0/log/20130328T191100Z.diff.html.gz + Fri Mar 29 00:54:54 2013 Nobuyoshi Nakada * lib/mkmf.rb (MAIN_DOES_NOTHING): ensure symbols for tests to be diff --git a/numeric.c b/numeric.c index c9302fb0e8..bad9a63f25 100644 --- a/numeric.c +++ b/numeric.c @@ -2258,7 +2258,7 @@ rb_num2ull(VALUE val) case T_FLOAT: if (RFLOAT_VALUE(val) < ULLONG_MAX_PLUS_ONE && LLONG_MIN_MINUS_ONE_IS_LESS_THAN(RFLOAT_VALUE(val))) { - return (unsigned LONG_LONG)(RFLOAT_VALUE(val)); + return (unsigned LONG_LONG)(LONG_LONG)(RFLOAT_VALUE(val)); } else { char buf[24]; -- cgit v1.2.3