From b515528271a25e52cdbc28289436c94108141b4a Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 8 Mar 2017 04:50:22 +0000 Subject: re-introduce __builtin_add_overflow r57789 (74cdd89) was gradually "improve"d by naruse through r57793 to r57806, resulted in reverting the efect of r57789 while retaining its complexity. I think the current situation is slightly worse than before (same output complicated source code). Here I introduce __builtin_add_overflow again, which (I think) is what naruse wanted to do in r57793. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57807 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- numeric.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'numeric.c') diff --git a/numeric.c b/numeric.c index 4f789e47a4..c728e309f4 100644 --- a/numeric.c +++ b/numeric.c @@ -3007,16 +3007,15 @@ VALUE rb_num2fix(VALUE val) { long v; - VALUE w; if (FIXNUM_P(val)) { return val; } - else if (rb_long2fix_overflow((v = rb_num2long(val)), &w)) { - rb_raise(rb_eRangeError, "integer %ld out of range of fixnum", v); + else if (rb_long_is_fixable_p(v = rb_num2long(val))) { + return LONG2FIX(v); } else { - return w; + rb_raise(rb_eRangeError, "integer %ld out of range of fixnum", v); } } -- cgit v1.2.3