io.c: IO#write without args returns 0

This is consistent with other implementations of .write
in openssl and stringio.

* io.c (io_write_m): return 0 on argc == 0
  [ruby-core:86285] [Bug #14338]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2018-03-28 08:38:21 +00:00
parent 706c028909
commit 7292569d3f
2 changed files with 8 additions and 1 deletions

2
io.c
View File

@ -1678,7 +1678,7 @@ io_writev(int argc, VALUE *argv, VALUE io)
static VALUE
io_write_m(int argc, VALUE *argv, VALUE io)
{
if (argc > 1) {
if (argc != 1) {
return io_writev(argc, argv, io);
}
else {

View File

@ -1287,6 +1287,13 @@ class TestIO < Test::Unit::TestCase
assert_empty(err)
end
def test_write_no_args
IO.pipe do |r, w|
assert_equal 0, w.write, '[ruby-core:86285] [Bug #14338]'
assert_equal :wait_readable, r.read_nonblock(1, exception: false)
end
end
def test_write_non_writable
with_pipe do |r, w|
assert_raise(IOError) do