diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-25 09:36:40 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-25 09:36:40 +0000 |
commit | bb4329becdce611519c8e6486661969ede17f704 (patch) | |
tree | 61a3c7350ef760daf1eb5922b8fcc7375991bdc1 /io.c | |
parent | d42b3e5c8875939208b3dfd0145447d15eba21b5 (diff) | |
download | ruby-bb4329becdce611519c8e6486661969ede17f704.tar.gz |
* io.c (pipe_close): removed.
(pipe_yield): defined.
(rb_io_s_pipe): use pipe_yield.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 15 |
1 files changed, 3 insertions, 12 deletions
@@ -7003,18 +7003,9 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt) } static VALUE -pipe_close(VALUE args) +pipe_yield(VALUE rw) { - VALUE *rw = (VALUE*)args; - VALUE io; - int i; - - for (i = 0; i < 2; i++) { - io = rw[i]; - if (!rb_io_closed(io)) - rb_io_close(io); - } - return Qnil; + return rb_ensure(rb_yield, rw, io_close, rb_ary_entry(rw, 1)); } /* @@ -7122,7 +7113,7 @@ rb_io_s_pipe(int argc, VALUE *argv, VALUE klass) rw[0] = r; rw[1] = w; if (rb_block_given_p()) { - return rb_ensure(rb_yield, ret, pipe_close, (VALUE)rw); + return rb_ensure(pipe_yield, ret, io_close, r); } return ret; } |