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

ruby-changes:8542

From: yugui <ko1@a...>
Date: Fri, 31 Oct 2008 18:46:56 +0900 (JST)
Subject: [ruby-changes:8542] Ruby:r20076 (trunk, ruby_1_9_1): * array.c (ary_partial0): recovers mistakenly feature change at r19723.

yugui	2008-10-31 18:46:31 +0900 (Fri, 31 Oct 2008)

  New Revision: 20076

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

  Log:
    * array.c (ary_partial0): recovers mistakenly feature change at r19723.
      Array#[m,n] had returned an Array even for an instance of a
      subclass.

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/array.c
    trunk/ChangeLog
    trunk/array.c

Index: array.c
===================================================================
--- array.c	(revision 20075)
+++ array.c	(revision 20076)
@@ -610,7 +610,10 @@
     assert(offset+len <= RARRAY_LEN(ary));
 
     if (len <= RARRAY_EMBED_LEN_MAX) {
-        return rb_ary_new4(len, RARRAY_PTR(ary) + offset);
+        VALUE result = ary_alloc(rb_obj_class(ary));
+        MEMCPY(ARY_EMBED_PTR(result), RARRAY_PTR(ary) + offset, VALUE, len);
+        ARY_SET_EMBED_LEN(result, len);
+        return result;
     }
     else {
         VALUE shared, result = ary_alloc(rb_obj_class(ary));
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 20075)
+++ ChangeLog	(revision 20076)
@@ -1,3 +1,9 @@
+Fri Oct 31 18:42:19 2008  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* array.c (ary_partial0): recovers mistakenly feature change at r19723.
+	  Array#[m,n] had returned an Array even for an instance of a
+	  subclass.
+
 Fri Oct 31 18:05:05 2008  Martin Duerst  <duerst@i...>
 
 	* enc/trans/single_byte.trans, maccroatioan-tbl.rb,
Index: ruby_1_9_1/array.c
===================================================================
--- ruby_1_9_1/array.c	(revision 20075)
+++ ruby_1_9_1/array.c	(revision 20076)
@@ -604,7 +604,10 @@
     assert(offset+len <= RARRAY_LEN(ary));
 
     if (len <= RARRAY_EMBED_LEN_MAX) {
-        return rb_ary_new4(len, RARRAY_PTR(ary) + offset);
+        VALUE result = ary_alloc(rb_obj_class(ary));
+        MEMCPY(ARY_EMBED_PTR(result), RARRAY_PTR(ary) + offset, VALUE, len);
+        ARY_SET_EMBED_LEN(result, len);
+        return result;
     }
     else {
         VALUE shared, result = ary_alloc(rb_obj_class(ary));
Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 20075)
+++ ruby_1_9_1/ChangeLog	(revision 20076)
@@ -1,3 +1,9 @@
+Fri Oct 31 18:42:19 2008  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* array.c (ary_partial0): recovers mistakenly feature change at r19723.
+	  Array#[m,n] had returned an Array even for an instance of a
+	  subclass.
+
 Fri Oct 31 12:27:52 2008  Yuki Sonoda (Yugui)  <yugui@y...>
 
 	* spec/default.mspec: supports that the build directory != srcdir.

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

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