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

ruby-changes:34107

From: nagachika <ko1@a...>
Date: Wed, 28 May 2014 00:44:55 +0900 (JST)
Subject: [ruby-changes:34107] nagachika:r46188 (ruby_2_1): merge revision(s) r45562: [Backport #9727]

nagachika	2014-05-28 00:44:36 +0900 (Wed, 28 May 2014)

  New Revision: 46188

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

  Log:
    merge revision(s) r45562: [Backport #9727]
    
    * array.c (ary_reject): may be turned into a shared array during
      the given block.  [ruby-dev:48101] [Bug #9727]

  Modified directories:
    branches/ruby_2_1/
  Modified files:
    branches/ruby_2_1/ChangeLog
    branches/ruby_2_1/array.c
    branches/ruby_2_1/test/ruby/test_array.rb
    branches/ruby_2_1/version.h
Index: ruby_2_1/array.c
===================================================================
--- ruby_2_1/array.c	(revision 46187)
+++ ruby_2_1/array.c	(revision 46188)
@@ -903,19 +903,6 @@ rb_ary_push(VALUE ary, VALUE item) https://github.com/ruby/ruby/blob/trunk/ruby_2_1/array.c#L903
     return ary;
 }
 
-static VALUE
-rb_ary_push_1(VALUE ary, VALUE item)
-{
-    long idx = RARRAY_LEN(ary);
-
-    if (idx >= ARY_CAPA(ary)) {
-	ary_double_capa(ary, idx);
-    }
-    RARRAY_ASET(ary, idx, item);
-    ARY_SET_LEN(ary, idx + 1);
-    return ary;
-}
-
 VALUE
 rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
 {
@@ -3082,7 +3069,7 @@ ary_reject(VALUE orig, VALUE result) https://github.com/ruby/ruby/blob/trunk/ruby_2_1/array.c#L3069
     for (i = 0; i < RARRAY_LEN(orig); i++) {
 	VALUE v = RARRAY_AREF(orig, i);
 	if (!RTEST(rb_yield(v))) {
-	    rb_ary_push_1(result, v);
+	    rb_ary_push(result, v);
 	}
     }
     return result;
Index: ruby_2_1/ChangeLog
===================================================================
--- ruby_2_1/ChangeLog	(revision 46187)
+++ ruby_2_1/ChangeLog	(revision 46188)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ChangeLog#L1
+Wed May 28 00:38:37 2014  Nobuyoshi Nakada  <nobu@r...>
+
+	* array.c (ary_reject): may be turned into a shared array during
+	  the given block.  [ruby-dev:48101] [Bug #9727]
+
 Wed May 28 00:29:02 2014  Nobuyoshi Nakada  <nobu@r...>
 
 	* string.c (str_buf_cat): should round up the capacity by 4KiB,
Index: ruby_2_1/version.h
===================================================================
--- ruby_2_1/version.h	(revision 46187)
+++ ruby_2_1/version.h	(revision 46188)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/version.h#L1
 #define RUBY_VERSION "2.1.2"
 #define RUBY_RELEASE_DATE "2014-05-28"
-#define RUBY_PATCHLEVEL 109
+#define RUBY_PATCHLEVEL 110
 
 #define RUBY_RELEASE_YEAR 2014
 #define RUBY_RELEASE_MONTH 5
Index: ruby_2_1/test/ruby/test_array.rb
===================================================================
--- ruby_2_1/test/ruby/test_array.rb	(revision 46187)
+++ ruby_2_1/test/ruby/test_array.rb	(revision 46188)
@@ -2011,6 +2011,22 @@ class TestArray < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/ruby/test_array.rb#L2011
     assert_equal([1, 3], [0, 1, 2, 3].reject {|x| x % 2 == 0 })
   end
 
+  def test_reject_with_callcc
+    respond_to?(:callcc, true) or require 'continuation'
+    bug9727 = '[ruby-dev:48101] [Bug #9727]'
+    cont = nil
+    a = [*1..10].reject do |i|
+      callcc {|c| cont = c} if !cont and i == 10
+      false
+    end
+    if a.size < 1000
+      a.unshift(:x)
+      cont.call
+    end
+    assert_equal(1000, a.size, bug9727)
+    assert_equal([:x, *1..10], a.uniq, bug9727)
+  end
+
   def test_zip
     assert_equal([[1, :a, "a"], [2, :b, "b"], [3, nil, "c"]],
       [1, 2, 3].zip([:a, :b], ["a", "b", "c", "d"]))

Property changes on: ruby_2_1
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r45562


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

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