From fa1e85c9331d0761418ef4dca87d9a51f5849cfc Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 8 Jul 2013 16:19:18 +0000 Subject: * bignum.c (bigrsh_bang): Fix bignum digits overrun. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ bignum.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 43365c401f..7b9b116700 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Jul 9 01:17:57 2013 Tanaka Akira + + * bignum.c (bigrsh_bang): Fix bignum digits overrun. + Tue Jul 9 00:46:22 2013 Tanaka Akira * bignum.c (biglsh_bang): Fix bignum digits under-run. diff --git a/bignum.c b/bignum.c index c93061d44f..5918cefb7e 100644 --- a/bignum.c +++ b/bignum.c @@ -4452,11 +4452,11 @@ bigrsh_bang(BDIGIT* xds, long xn, unsigned long shift) i = 0; zds = xds + s1; num = *zds++>>s2; - do { + while (i < xn - s1 - 1) { xds[i++] = BIGLO(*zds<>s2; } - while (i < xn - s1 - 1); + assert(i < xn); xds[i] = num; MEMZERO(xds + xn - s1, BDIGIT, s1); } -- cgit v1.2.3