From b5035524df1d70b0a8c4454e552aad53f63a31d3 Mon Sep 17 00:00:00 2001 From: yugui Date: Fri, 31 Oct 2008 09:46:31 +0000 Subject: * array.c (ary_partial0): recovers mistakenly feature change at r19723. Array#[m,n] had returned an Array even for an instance of a subclass. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- array.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'array.c') diff --git a/array.c b/array.c index 46d31ca4c2..732b981b29 100644 --- a/array.c +++ b/array.c @@ -604,7 +604,10 @@ ary_make_partial0(VALUE ary, long offset, long len) 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)); -- cgit v1.2.3