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

ruby-changes:11698

From: yugui <ko1@a...>
Date: Mon, 4 May 2009 21:31:37 +0900 (JST)
Subject: [ruby-changes:11698] Ruby:r23339 (ruby_1_9_1): merges r23191 from trunk into ruby_1_9_1.

yugui	2009-05-04 21:30:55 +0900 (Mon, 04 May 2009)

  New Revision: 23339

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

  Log:
    merges r23191 from trunk into ruby_1_9_1.
    --
    * array.c (rb_ary_flatten): flatten(0) works as Array#dup.
      [ruby-core:23168]
    * test/ruby/test_array.rb: add a test for above.

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/array.c
    branches/ruby_1_9_1/test/ruby/test_array.rb

Index: ruby_1_9_1/array.c
===================================================================
--- ruby_1_9_1/array.c	(revision 23338)
+++ ruby_1_9_1/array.c	(revision 23339)
@@ -630,6 +630,12 @@
     }
 }
 
+static VALUE
+ary_make_shared_copy(VALUE ary)
+{
+    return ary_make_partial(ary, rb_obj_class(ary), 0, RARRAY_LEN(ary));
+}
+
 enum ary_take_pos_flags
 {
     ARY_TAKE_FIRST = 0,
@@ -3219,7 +3225,7 @@
 
     rb_scan_args(argc, argv, "01", &lv);
     if (!NIL_P(lv)) level = NUM2INT(lv);
-    if (level == 0) return ary;
+    if (level == 0) return ary_make_shared_copy(ary);
 
     result = flatten(ary, level, &mod);
     OBJ_INFECT(result, ary);
Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 23338)
+++ ruby_1_9_1/ChangeLog	(revision 23339)
@@ -1,3 +1,10 @@
+Wed Apr 15 20:24:49 2009  Yusuke Endoh  <mame@t...>
+
+	* array.c (rb_ary_flatten): flatten(0) works as Array#dup.
+	  [ruby-core:23168]
+
+	* test/ruby/test_array.rb: add a test for above.
+
 Fri Apr 17 00:45:09 2009  Yusuke Endoh  <mame@t...>
 
 	* dir.c (bracket): fix escape handling for range character in bracket
Index: ruby_1_9_1/test/ruby/test_array.rb
===================================================================
--- ruby_1_9_1/test/ruby/test_array.rb	(revision 23338)
+++ ruby_1_9_1/test/ruby/test_array.rb	(revision 23339)
@@ -719,6 +719,11 @@
     a7 = a6.flatten
     assert_equal(true, a7.tainted?)
     assert_equal(true, a7.untrusted?)
+
+    a8 = @cls[[1, 2], 3]
+    a9 = a8.flatten(0)
+    assert_equal(a8, a9)
+    assert_not_same(a8, a9)
   end
 
   def test_flatten!

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

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