summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-03-28 21:49:55 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-03-28 21:49:55 +0000
commit1950c1ce6c43449017abf9e3d3310ee4892d9a95 (patch)
treede08594e734505b0beb2a09738d11a2803ca97f2 /numeric.c
parent023c7f6a37c56ed7d0865edb12d1428558f060ea (diff)
* 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
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c2
1 files changed, 1 insertions, 1 deletions
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];