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

ruby-changes:16681

From: nobu <ko1@a...>
Date: Sun, 18 Jul 2010 21:20:27 +0900 (JST)
Subject: [ruby-changes:16681] Ruby:r28677 (trunk): * array.c (rb_ary_clear): no need to duplicate buffer just before

nobu	2010-07-18 21:20:14 +0900 (Sun, 18 Jul 2010)

  New Revision: 28677

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

  Log:
    * array.c (rb_ary_clear): no need to duplicate buffer just before
      clearing.

  Modified files:
    trunk/ChangeLog
    trunk/array.c

Index: array.c
===================================================================
--- array.c	(revision 28676)
+++ array.c	(revision 28677)
@@ -2772,9 +2772,12 @@
 VALUE
 rb_ary_clear(VALUE ary)
 {
-    rb_ary_modify(ary);
+    rb_ary_modify_check(ary);
     ARY_SET_LEN(ary, 0);
-    if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
+    if (ARY_SHARED_P(ary)) {
+	rb_ary_unshare(ary);
+    }
+    else if (ARY_DEFAULT_SIZE * 2 < ARY_CAPA(ary)) {
 	ary_resize_capa(ary, ARY_DEFAULT_SIZE * 2);
     }
     return ary;
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 28676)
+++ ChangeLog	(revision 28677)
@@ -1,3 +1,8 @@
+Sun Jul 18 21:20:11 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* array.c (rb_ary_clear): no need to duplicate buffer just before
+	  clearing.
+
 Sun Jul 18 16:31:50 2010  Nobuyoshi Nakada  <nobu@r...>
 
 	* include/ruby/ruby.h (rb_data_type_t): restructured.  [ruby-dev:41862]

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

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