diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-02-26 05:29:06 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-02-26 05:29:06 +0000 |
commit | df2d69b49ab1c8b42dd6c18fb63df26aec95f364 (patch) | |
tree | f352837db7633a5d6355461ca14f0f870d951e86 /array.c | |
parent | 69739b14a5f8950c1da8b86f90a70903ed975fee (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.c | 10 |
1 files changed, 2 insertions, 8 deletions
@@ -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; |