diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-01 23:49:16 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-01 23:49:16 +0000 |
commit | 1d1b8102bcb38b982855395e97067139190de1d8 (patch) | |
tree | 90aeb9eeaa0c42b52312e1875433b2dafea4c52f /io.c | |
parent | c2d8185ba63818aee5457b178aa2e85a9e81b053 (diff) |
* eval.c (proc_invoke): nail down dyna_var node when Proc object
or continuation is created. [ruby-dev:24671]
* io.c (rb_io_s_popen): do not expand argv array. [ruby-dev:24670]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 28 |
1 files changed, 12 insertions, 16 deletions
@@ -2793,7 +2793,7 @@ pipe_open(argc, argv, pname, mode) argc = 0; prog = argv[0]; } - pname = StringValuePtr(prog); + pname = StringValueCStr(prog); } cmd = pname; @@ -2971,25 +2971,21 @@ rb_io_s_popen(argc, argv, klass) } tmp = rb_check_array_type(pname); if (!NIL_P(tmp)) { - long argc = RARRAY(tmp)->len; - VALUE *argv = ALLOCA_N(VALUE, argc); - - MEMCPY(argv, RARRAY(tmp)->ptr, VALUE, argc); - port = pipe_open(argc, argv, 0, mode); + pname = tmp; } else { SafeStringValue(pname); - port = pipe_open(1, &pname, 0, mode); - if (NIL_P(port)) { - /* child */ - if (rb_block_given_p()) { - rb_yield(Qnil); - fflush(stdout); - fflush(stderr); - _exit(0); - } - return Qnil; + } + port = pipe_open(1, &pname, 0, mode); + if (NIL_P(port)) { + /* child */ + if (rb_block_given_p()) { + rb_yield(Qnil); + fflush(stdout); + fflush(stderr); + _exit(0); } + return Qnil; } RBASIC(port)->klass = klass; if (rb_block_given_p()) { |