summaryrefslogtreecommitdiff
path: root/enum.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-01-08 12:48:12 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-01-08 12:48:12 +0000
commit113f27ba68e69f9e6bdb3e75b7be2dd8180c0484 (patch)
treead39959e062cda005d937236676ac5bd41f3503a /enum.c
parent8eec9c941348db179c900c896797c78b22d33261 (diff)
* enum.c (enum_sort_by): use rb_ary_resize.
(ary_cutoff): removed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r--enum.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/enum.c b/enum.c
index 458ad0b80a..58fb8ca72b 100644
--- a/enum.c
+++ b/enum.c
@@ -812,19 +812,6 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
return rb_cmpint(rb_funcall(a, id_cmp, 1, b), a, b);
}
-static void
-ary_cutoff(VALUE ary, long len)
-{
- long i;
- if (RBASIC(ary)->flags & RARRAY_EMBED_FLAG) {
- for (i=RARRAY_LEN(ary)-len; 0<i; i--)
- rb_ary_pop(ary);
- }
- else {
- RARRAY(ary)->as.heap.len = len;
- }
-}
-
/*
* call-seq:
* enum.sort_by {| obj | block } -> array
@@ -918,7 +905,7 @@ enum_sort_by(VALUE obj)
rb_ary_store(data.buf, SORT_BY_BUFSIZE*2-1, Qnil);
rb_block_call(obj, id_each, 0, 0, sort_by_i, (VALUE)&data);
if (data.n) {
- ary_cutoff(data.buf, data.n*2);
+ rb_ary_resize(data.buf, data.n*2);
rb_ary_concat(ary, data.buf);
}
if (RARRAY_LEN(ary) > 2) {
@@ -931,7 +918,7 @@ enum_sort_by(VALUE obj)
for (i=1; i<RARRAY_LEN(ary); i+=2) {
RARRAY_PTR(ary)[i/2] = RARRAY_PTR(ary)[i];
}
- ary_cutoff(ary, RARRAY_LEN(ary)/2);
+ rb_ary_resize(ary, RARRAY_LEN(ary)/2);
RBASIC(ary)->klass = rb_cArray;
OBJ_INFECT(ary, obj);