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

ruby-changes:4832

From: ko1@a...
Date: Thu, 8 May 2008 15:14:53 +0900 (JST)
Subject: [ruby-changes:4832] nobu - Ruby:r16326 (trunk): * array.c (rb_ary_sort_bang): freeze temporary array.

nobu	2008-05-08 15:14:36 +0900 (Thu, 08 May 2008)

  New Revision: 16326

  Modified files:
    trunk/ChangeLog
    trunk/array.c

  Log:
    * array.c (rb_ary_sort_bang): freeze temporary array.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/array.c?r1=16326&r2=16325&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16326&r2=16325&diff_format=u

Index: array.c
===================================================================
--- array.c	(revision 16325)
+++ array.c	(revision 16326)
@@ -1513,13 +1513,16 @@
 	RBASIC(tmp)->klass = 0;
 	ruby_qsort(RARRAY_PTR(tmp), RARRAY_LEN(tmp), sizeof(VALUE),
 		   rb_block_given_p()?sort_1:sort_2, &RBASIC(tmp)->klass);
+	sort_reentered(&RBASIC(tmp)->klass);
 	RARRAY(ary)->ptr = RARRAY(tmp)->ptr;
 	RARRAY(ary)->len = RARRAY(tmp)->len;
 	RARRAY(ary)->aux.capa = RARRAY(tmp)->aux.capa;
 	FL_UNSET(ary, ELTS_SHARED);
 	RARRAY(tmp)->ptr = 0;
 	RARRAY(tmp)->len = 0;
+	RARRAY(tmp)->aux.capa = 0;
 	RBASIC(tmp)->klass = RBASIC(ary)->klass;
+	OBJ_FREEZE(tmp);
     }
     return ary;
 }
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16325)
+++ ChangeLog	(revision 16326)
@@ -1,3 +1,7 @@
+Thu May  8 15:14:34 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* array.c (rb_ary_sort_bang): freeze temporary array.
+
 Thu May  8 13:19:18 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* vm.c (rb_thread_mark): mark stat_insn_usage only when ptr is not

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

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