summaryrefslogtreecommitdiff
path: root/array.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-26 05:29:06 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-26 05:29:06 +0000
commitdf2d69b49ab1c8b42dd6c18fb63df26aec95f364 (patch)
treef352837db7633a5d6355461ca14f0f870d951e86 /array.c
parent69739b14a5f8950c1da8b86f90a70903ed975fee (diff)
* eval.c (proc_call): should not modify ruby_block->frame.iter
based on ruby_frame->iter altered by PUSH_ITER(). * eval.c (rb_thread_fd_close): should save current context before raising exception. * io.c (set_stdin): preserve original stdin. * io.c (set_outfile): preserve original stdout/stderr. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1219 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'array.c')
-rw-r--r--array.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/array.c b/array.c
index 768b7e8ffe..5695851f9c 100644
--- a/array.c
+++ b/array.c
@@ -283,14 +283,8 @@ rb_ary_push_m(argc, argv, ary)
rb_raise(rb_eArgError, "wrong # of arguments(at least 1)");
}
if (argc > 0) {
- long len = RARRAY(ary)->len;
-
- --argc;
- /* make rooms by copying the last item */
- rb_ary_store(ary, len + argc, argv[argc]);
-
- if (argc) { /* if any rest */
- MEMCPY(RARRAY(ary)->ptr + len, argv, VALUE, argc);
+ while (argc--) {
+ rb_ary_push(ary, *argv++);
}
}
return ary;