From 48bfbb574ea4112fdaf5d542a2c8d9918afd9237 Mon Sep 17 00:00:00 2001 From: akr Date: Fri, 14 Jun 2013 11:13:16 +0000 Subject: * bignum.c (bigdivrem): Use bignew when ny == 1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41301 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ bignum.c | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f18d6f7284..4610f51e9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Jun 14 20:12:37 2013 Tanaka Akira + + * bignum.c (bigdivrem): Use bignew when ny == 1. + Fri Jun 14 18:52:51 2013 Koichi Sasada * compile.c (rb_iseq_compile_node): fix location of a `trace' diff --git a/bignum.c b/bignum.c index cada8d0658..ddb889a284 100644 --- a/bignum.c +++ b/bignum.c @@ -3777,15 +3777,14 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp) } if (ny == 1) { dd = yds[0]; - z = rb_big_clone(x); + z = bignew(nx, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y)); zds = BDIGITS(z); t2 = 0; i = nx; while (i--) { - t2 = BIGUP(t2) + zds[i]; + t2 = BIGUP(t2) + xds[i]; zds[i] = (BDIGIT)(t2 / dd); t2 %= dd; } - RBIGNUM_SET_SIGN(z, RBIGNUM_SIGN(x)==RBIGNUM_SIGN(y)); if (modp) { *modp = rb_uint2big((VALUE)t2); RBIGNUM_SET_SIGN(*modp, RBIGNUM_SIGN(x)); -- cgit v1.2.3