From fe6273975eb7a8b8bbc48ef62dc74b7a1a8c10e8 Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 7 Aug 2013 11:08:03 +0000 Subject: [PATCH] * bignum.c (rb_big_odd_p): Check the bignum length. (rb_big_even_p): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ bignum.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5c0d63ac1f..6143316e46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Aug 7 20:05:38 2013 Tanaka Akira + + * bignum.c (rb_big_odd_p): Check the bignum length. + (rb_big_even_p): Ditto. + Wed Aug 7 19:29:26 2013 Tanaka Akira * bignum.c (dbl2big): A condition simplified. diff --git a/bignum.c b/bignum.c index d3c0f7747b..7a73a5c8e2 100644 --- a/bignum.c +++ b/bignum.c @@ -6559,7 +6559,7 @@ rb_big_size(VALUE big) static VALUE rb_big_odd_p(VALUE num) { - if (BDIGITS(num)[0] & 1) { + if (RBIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) { return Qtrue; } return Qfalse; @@ -6575,7 +6575,7 @@ rb_big_odd_p(VALUE num) static VALUE rb_big_even_p(VALUE num) { - if (BDIGITS(num)[0] & 1) { + if (RBIGNUM_LEN(num) != 0 && BDIGITS(num)[0] & 1) { return Qfalse; } return Qtrue;