diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | bignum.c | 8 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 13 insertions, 5 deletions
@@ -1,3 +1,11 @@ +Sat Jul 13 23:16:49 2013 Tanaka Akira <akr@fsij.org> + + * bignum.c (bigrsh_bang): Fix bignum digits overrun. + +Sat Jul 13 23:16:49 2013 Tanaka Akira <akr@fsij.org> + + * bignum.c (biglsh_bang): Fix bignum digits under-run. + Sat Jul 13 22:45:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> * configure.in (RUBY_DTRACE_POSTPROCESS): dtrace version SUN D 1.11 @@ -2335,11 +2335,11 @@ biglsh_bang(BDIGIT *xds, long xn, unsigned long shift) zds = xds + xn - 1; xn -= s1 + 1; num = xds[xn]<<s2; - do { + while (0 < xn) { *zds-- = num | xds[--xn]>>s3; num = xds[xn]<<s2; } - while (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<<s3) | num; num = *zds++>>s2; } - while (i < xn - s1 - 1); + assert(i < xn); xds[i] = num; MEMZERO(xds + xn - s1, BDIGIT, s1); } @@ -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 |