diff --git a/ChangeLog b/ChangeLog index 025a181a05..a7507fb5c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,10 @@ -Tue Feb 11 23:42:27 2014 Tanaka Akira +Tue Feb 11 23:54:40 2014 Tanaka Akira * bignum.c (rb_big_cmp): Specialize a comparison to zero. * ext/bigdecimal/bigdecimal.c (is_negative): Use rb_big_cmp instead of RBIGNUM_NEGATIVE_P. + (BigMath_s_log): Ditto. Tue Feb 11 22:59:10 2014 Tanaka Akira diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index f426a45cef..ffc6613629 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -2874,8 +2874,9 @@ BigMath_s_log(VALUE klass, VALUE x, VALUE vprec) goto get_vp_value; case T_BIGNUM: - zero = RBIGNUM_ZERO_P(x); - negative = RBIGNUM_NEGATIVE_P(x); + i = FIX2INT(rb_big_cmp(x, INT2FIX(0))); + zero = i == 0; + negative = i < 0; get_vp_value: if (zero || negative) break; vx = GetVpValue(x, 0);