[前][次][番号順一覧][スレッド一覧]

ruby-changes:7893

From: matz <ko1@a...>
Date: Thu, 18 Sep 2008 20:21:51 +0900 (JST)
Subject: [ruby-changes:7893] Ruby:r19414 (trunk): * bignum.c (big2str_karatsuba): free internal buffer eagerly.

matz	2008-09-18 20:21:34 +0900 (Thu, 18 Sep 2008)

  New Revision: 19414

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19414

  Log:
    * bignum.c (big2str_karatsuba): free internal buffer eagerly.
      a patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com>
      in [ruby-dev:36217].
    
    * bignum.c (rb_big2str0): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/bignum.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19413)
+++ ChangeLog	(revision 19414)
@@ -3,6 +3,14 @@
 	* lib/uri/common.rb (unescape): skip '%' to make String#hex work
 	  correctly.
 
+Thu Sep 18 19:51:11 2008  Yukihiro Matsumoto  <matz@r...>
+
+	* bignum.c (big2str_karatsuba): free internal buffer eagerly.
+	  a patch from TOYOFUKU Chikanobu <nobu_toyofuku at nifty.com>
+	  in [ruby-dev:36217].
+
+	* bignum.c (rb_big2str0): ditto.
+
 Thu Sep 18 19:43:04 2008  Yusuke Endoh  <mame@t...>
 
 	* st.c (new_size): raise RuntimeError when st_table is too big.
Index: bignum.c
===================================================================
--- bignum.c	(revision 19413)
+++ bignum.c	(revision 19414)
@@ -909,8 +909,10 @@
     bigdivmod(x, b, &q, &r);
     lh = big2str_karatsuba(q, base, ptr, (len - m1)/2,
 			   len - m1, hbase, trim);
+    rb_big_resize(q, 0);
     ll = big2str_karatsuba(r, base, ptr + lh, m1/2,
 			   m1, hbase, !lh && trim);
+    rb_big_resize(r, 0);
 
     return lh + ll;
 }
@@ -953,6 +955,7 @@
 	len = off + big2str_karatsuba(xx, base, ptr + off, n1,
 				      n2, hbase, trim);
     }
+    rb_big_resize(xx, 0);
 
     ptr[len] = '\0';
     rb_str_resize(ss, len);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]