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/