diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-11-11 14:03:17 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-11-11 14:03:17 +0000 |
commit | a77d2ac5ba56e92fac2d9d88b7d57cce20129d57 (patch) | |
tree | 81dce95b77fc265275a74c6b5f3cf8b34ae8591d /io.c | |
parent | 684a6059e9ea9b0c7aefd26976e7c0488ece883a (diff) | |
download | ruby-a77d2ac5ba56e92fac2d9d88b7d57cce20129d57.tar.gz |
* io.c (argf_close): untie tied io before closing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -315,10 +315,15 @@ rb_io_set_write_io(VALUE io, VALUE w) { VALUE write_io; rb_io_check_initialized(RFILE(io)->fptr); - GetWriteIO(w); + if (!RTEST(w)) { + w = 0; + } + else { + GetWriteIO(w); + } write_io = RFILE(io)->fptr->tied_io_for_writing; RFILE(io)->fptr->tied_io_for_writing = w; - return write_io; + return write_io ? write_io : Qnil; } /* @@ -6781,6 +6786,9 @@ argf_forward(int argc, VALUE *argv, VALUE argf) static void argf_close(VALUE file) { + if (RB_TYPE_P(file, T_FILE)) { + rb_io_set_write_io(file, Qnil); + } rb_funcall3(file, rb_intern("close"), 0, 0); } |