From 0e02d92371b3c3f1474195f1bfe7233b790be040 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 7 Sep 2013 12:34:09 +0000 Subject: * math.c (math_log): Test the sign for bignums. (math_log2): Ditto. (math_log10): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- math.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'math.c') diff --git a/math.c b/math.c index d79a528b92..a8049297c2 100644 --- a/math.c +++ b/math.c @@ -444,7 +444,7 @@ math_log(int argc, VALUE *argv) rb_scan_args(argc, argv, "11", &x, &base); - if (TYPE(x) == T_BIGNUM && + if (TYPE(x) == T_BIGNUM && RBIGNUM_POSITIVE_P(x) && DBL_MAX_EXP <= (numbits = rb_absint_numwords(x, 1, NULL))) { numbits -= DBL_MANT_DIG; x = rb_big_rshift(x, SIZET2NUM(numbits)); @@ -501,7 +501,7 @@ math_log2(VALUE obj, VALUE x) double d0, d; size_t numbits = 0; - if (TYPE(x) == T_BIGNUM && + if (TYPE(x) == T_BIGNUM && RBIGNUM_POSITIVE_P(x) && DBL_MAX_EXP <= (numbits = rb_absint_numwords(x, 1, NULL))) { numbits -= DBL_MANT_DIG; x = rb_big_rshift(x, SIZET2NUM(numbits)); @@ -540,7 +540,7 @@ math_log10(VALUE obj, VALUE x) double d0, d; size_t numbits = 0; - if (TYPE(x) == T_BIGNUM && + if (TYPE(x) == T_BIGNUM && RBIGNUM_POSITIVE_P(x) && DBL_MAX_EXP <= (numbits = rb_absint_numwords(x, 1, NULL))) { numbits -= DBL_MANT_DIG; x = rb_big_rshift(x, SIZET2NUM(numbits)); -- cgit v1.2.3