diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-16 02:24:58 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-16 02:24:58 +0000 |
commit | efc605aeadf6f428b3ceecb749ed325290f79d66 (patch) | |
tree | 077d3c6124832c82d2a30c9f81bcb4596bedb9a5 /array.c | |
parent | 23c5ee8a9db3539549f40a177913072a85948901 (diff) | |
download | ruby-efc605aeadf6f428b3ceecb749ed325290f79d66.tar.gz |
* array.c (ary_shared_first): should create embedded copies
instead of sharing memory region for smaller arrays.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -474,7 +474,7 @@ ary_shared_first(int argc, VALUE *argv, VALUE ary, int last) if (last) { offset = RARRAY_LEN(ary) - n; } - if (ARY_EMBED_P(ary)) { + if (ARY_EMBED_P(ary) || n <= RARRAY_EMBED_LEN_MAX) { return rb_ary_new4(n, RARRAY_PTR(ary)+offset); } else { |