From d631642a2ef3e86b0d3764df4c881a286fd13ec9 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 15 Jun 2013 23:56:32 +0000 Subject: [PATCH] * bignum.c (bigdivrem): Use a BDIGIT variable to store the return value of bigdivrem_single. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ bignum.c | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 195830469c..570ac0dafd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Jun 16 08:55:22 2013 Tanaka Akira + + * bignum.c (bigdivrem): Use a BDIGIT variable to store the return + value of bigdivrem_single. + Sun Jun 16 08:43:59 2013 Tanaka Akira * bignum.c (bary_divmod): New function. diff --git a/bignum.c b/bignum.c index 136318b618..0d4bab33cf 100644 --- a/bignum.c +++ b/bignum.c @@ -3951,12 +3951,12 @@ bary_divmod(BDIGIT *qds, long nq, BDIGIT *rds, long nr, BDIGIT *xds, long nx, BD MEMZERO(zds+nx, BDIGIT, nz-nx); if ((yds[ny-1] >> (BITSPERDIG-1)) & 1) { - /* digits_bigdivrem_multi_sub will not modify y. + /* bigdivrem_normal will not modify y. * So use yds directly. */ tds = yds; } else { - /* digits_bigdivrem_multi_sub will modify y. + /* bigdivrem_normal will modify y. * So use rds as a temporary buffer. */ MEMCPY(rds, yds, BDIGIT, ny); tds = rds; @@ -3986,7 +3986,6 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp) VALUE z, zz; VALUE tmpy = 0, tmpz = 0; BDIGIT *xds, *yds, *zds, *tds; - BDIGIT_DBL t2; BDIGIT dd; yds = BDIGITS(y); @@ -4006,9 +4005,9 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp) dd = yds[0]; z = bignew(nx, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y)); zds = BDIGITS(z); - t2 = bigdivrem_single(zds, xds, nx, dd); + dd = bigdivrem_single(zds, xds, nx, dd); if (modp) { - *modp = rb_uint2big((VALUE)t2); + *modp = rb_uint2big((VALUE)dd); RBIGNUM_SET_SIGN(*modp, RBIGNUM_SIGN(x)); } if (divp) *divp = z;