diff options
| author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-14 05:55:54 +0000 |
|---|---|---|
| committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-14 05:55:54 +0000 |
| commit | 11438d8095feb8ce95b8036871188846af12aba8 (patch) | |
| tree | 0f17910258d28db1487bc5f171e32437beca313b | |
| parent | f76d0bf428cb848a84d328fee27fc5c1e491528e (diff) | |
| download | ruby-11438d8095feb8ce95b8036871188846af12aba8.tar.gz ruby-11438d8095feb8ce95b8036871188846af12aba8.tar.xz ruby-11438d8095feb8ce95b8036871188846af12aba8.zip | |
* bignum.c (bigmul1_balance, bigmul1_karatsuba): remove all
rb_gc_force_recycle which causes memory leak.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | bignum.c | 10 |
2 files changed, 5 insertions, 10 deletions
@@ -1,3 +1,8 @@ +Sun Dec 14 14:53:41 2008 Yusuke Endoh <mame@tsg.ne.jp> + + * bignum.c (bigmul1_balance, bigmul1_karatsuba): remove all + rb_gc_force_recycle which causes memory leak. + Sun Dec 14 14:26:11 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> * spec/README: directory structrue changed @@ -1617,7 +1617,6 @@ bigmul1_balance(VALUE x, VALUE y) yn -= r; n += r; } - rb_gc_force_recycle(t1); return z; } @@ -1698,7 +1697,6 @@ bigmul1_karatsuba(VALUE x, VALUE y) /* subtract t2 from middle bytes of the result (z1) */ i = xn + yn - n; bigsub_core(zds + n, i, BDIGITS(t2), t2n, zds + n, i); - rb_gc_force_recycle(t2); } else { /* copy 0 into low bytes of the result (z0) */ @@ -1708,26 +1706,18 @@ bigmul1_karatsuba(VALUE x, VALUE y) /* subtract t1 from middle bytes of the result (z1) */ i = xn + yn - n; bigsub_core(zds + n, i, BDIGITS(t1), t1n, zds + n, i); - rb_gc_force_recycle(t1); /* t1 <- xh + xl */ t1 = bigadd(xh, xl, 1); - if (xh != yh) rb_gc_force_recycle(xh); - if (xl != yl) rb_gc_force_recycle(xl); /* t2 <- yh + yl */ t2 = (x == y) ? t1 : bigadd(yh, yl, 1); - rb_gc_force_recycle(yh); - rb_gc_force_recycle(yl); /* t3 <- t1 * t2 */ t3 = bigmul0(t1, t2); - rb_gc_force_recycle(t1); - if (t1 != t2) rb_gc_force_recycle(t2); /* add t3 to middle bytes of the result (z1) */ bigadd_core(zds + n, i, BDIGITS(t3), big_real_len(t3), zds + n, i); - rb_gc_force_recycle(t3); return z; } |
