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

ruby-changes:11782

From: nobu <ko1@a...>
Date: Fri, 15 May 2009 17:35:52 +0900 (JST)
Subject: [ruby-changes:11782] Ruby:r23433 (trunk): * array.c (rb_ary_shift, rb_ary_shift_m): clears unused elements.

nobu	2009-05-15 17:35:35 +0900 (Fri, 15 May 2009)

  New Revision: 23433

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

  Log:
    * array.c (rb_ary_shift, rb_ary_shift_m): clears unused elements.
      [ruby-dev:38448]

  Modified files:
    trunk/ChangeLog
    trunk/array.c

Index: array.c
===================================================================
--- array.c	(revision 23432)
+++ array.c	(revision 23433)
@@ -807,6 +807,9 @@
 	RARRAY_PTR(ary)[0] = Qnil;
 	ary_make_shared(ary);
     }
+    else if (ARY_SHARED_NUM(ARY_SHARED(ary)) == 1) {
+	RARRAY_PTR(ary)[0] = Qnil;
+    }
     ARY_INCREASE_PTR(ary, 1);		/* shift ptr */
     ARY_INCREASE_LEN(ary, -1);
 
@@ -848,6 +851,9 @@
     result = ary_take_first_or_last(argc, argv, ary, ARY_TAKE_FIRST);
     n = RARRAY_LEN(result);
     if (ARY_SHARED_P(ary)) {
+	if (ARY_SHARED_NUM(ARY_SHARED(ary)) == 1) {
+	    rb_mem_clear(RARRAY_PTR(ary), n);
+	}
         ARY_INCREASE_PTR(ary, n);
     }
     else {
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23432)
+++ ChangeLog	(revision 23433)
@@ -1,3 +1,8 @@
+Fri May 15 17:35:33 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* array.c (rb_ary_shift, rb_ary_shift_m): clears unused elements.
+	  [ruby-dev:38448]
+
 Fri May 15 15:15:12 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* variable.c (rb_autoload_load): checks if iv_tbl is valid.

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

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