From 57ec0834a1fdd759d942feba1568305853d77270 Mon Sep 17 00:00:00 2001 From: nagachika Date: Sat, 13 Jul 2013 14:25:36 +0000 Subject: merge revision(s) 41839,41841: * bignum.c (biglsh_bang): Fix bignum digits under-run. * bignum.c (bigrsh_bang): Fix bignum digits overrun. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@41944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ bignum.c | 8 ++++---- version.h | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 23a92a0106..6f0f295332 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Sat Jul 13 23:16:49 2013 Tanaka Akira + + * bignum.c (bigrsh_bang): Fix bignum digits overrun. + +Sat Jul 13 23:16:49 2013 Tanaka Akira + + * bignum.c (biglsh_bang): Fix bignum digits under-run. + Sat Jul 13 22:45:10 2013 Nobuyoshi Nakada * configure.in (RUBY_DTRACE_POSTPROCESS): dtrace version SUN D 1.11 diff --git a/bignum.c b/bignum.c index 97557165b7..a9448ceab0 100644 --- a/bignum.c +++ b/bignum.c @@ -2335,11 +2335,11 @@ biglsh_bang(BDIGIT *xds, long xn, unsigned long shift) zds = xds + xn - 1; xn -= s1 + 1; num = xds[xn]<>s3; num = xds[xn]< 0); + assert(xds <= zds); *zds = num; for (i = s1; i > 0; --i) *zds-- = 0; @@ -2362,11 +2362,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++] = (BDIGIT)(*zds<>s2; } - while (i < xn - s1 - 1); + assert(i < xn); xds[i] = num; MEMZERO(xds + xn - s1, BDIGIT, s1); } diff --git a/version.h b/version.h index 9dc2e74ba4..c6af636702 100644 --- a/version.h +++ b/version.h @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.0.0" #define RUBY_RELEASE_DATE "2013-07-13" -#define RUBY_PATCHLEVEL 257 +#define RUBY_PATCHLEVEL 258 #define RUBY_RELEASE_YEAR 2013 #define RUBY_RELEASE_MONTH 7 -- cgit v1.2.3