Feature #10718 ยป io-close.patch
| io.c (working copy) | ||
|---|---|---|
|
*
|
||
|
* If <em>ios</em> is opened by <code>IO.popen</code>,
|
||
|
* <code>close</code> sets <code>$?</code>.
|
||
|
*
|
||
|
* Calling this method on closed IO object is just ignored since Ruby 2.3.
|
||
|
*/
|
||
|
static VALUE
|
||
|
rb_io_close_m(VALUE io)
|
||
|
{
|
||
|
rb_io_t *fptr = RFILE(io)->fptr;
|
||
|
rb_io_check_initialized(fptr);
|
||
|
if (fptr->fd < 0) {
|
||
|
return Qnil;
|
||
|
}
|
||
|
rb_io_check_closed(RFILE(io)->fptr);
|
||
|
rb_io_close(io);
|
||
|
return Qnil;
|
||
| test/ruby/test_io.rb (working copy) | ||
|---|---|---|
|
end
|
||
|
end
|
||
|
end
|
||
|
def test_close_twice
|
||
|
open(__FILE__) {|f|
|
||
|
assert_equal(nil, f.close)
|
||
|
assert_equal(nil, f.close)
|
||
|
}
|
||
|
end
|
||
|
def test_close_uninitialized
|
||
|
io = IO.allocate
|
||
|
assert_raise(IOError) { io.close }
|
||
|
end
|
||
|
end
|
||
| test/socket/test_basicsocket.rb (working copy) | ||
|---|---|---|
|
sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
|
||
|
yield sock
|
||
|
ensure
|
||
|
assert_raise(IOError) {sock.close}
|
||
|
assert(sock.closed?)
|
||
|
end
|
||
|
def test_getsockopt
|
||
| test/zlib/test_zlib.rb (working copy) | ||
|---|---|---|
|
f = open(t.path)
|
||
|
f.binmode
|
||
|
assert_equal("foo", Zlib::GzipReader.wrap(f) {|gz| gz.read })
|
||
|
assert_raise(IOError) { f.close }
|
||
|
assert(f.closed?)
|
||
|
}
|
||
|
end
|
||