diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2022-10-11 10:18:20 +1300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-11 10:18:20 +1300 |
commit | 1bafa4a59b296e6ca80e32755fc84b76c3c575e5 (patch) | |
tree | 179f15f64f9eaffd62d0e69d7b667fe8e68145a7 | |
parent | 1a7e7bb2d1dd507a6fdf883548633bdd14bf6854 (diff) | |
download | ruby-1bafa4a59b296e6ca80e32755fc84b76c3c575e5.tar.gz |
Ignore failure to set nonblock mode. (#6524)
-rw-r--r-- | io.c | 4 | ||||
-rw-r--r-- | test/ruby/test_io.rb | 16 |
2 files changed, 18 insertions, 2 deletions
@@ -3571,7 +3571,7 @@ io_read_nonblock(rb_execution_context_t *ec, VALUE io, VALUE length, VALUE str, n = read_buffered_data(RSTRING_PTR(str), len, fptr); if (n <= 0) { - rb_io_set_nonblock(fptr); + rb_fd_set_nonblock(fptr->fd); shrinkable |= io_setstrbuf(&str, len); iis.fptr = fptr; iis.nonblock = 1; @@ -3618,7 +3618,7 @@ io_write_nonblock(rb_execution_context_t *ec, VALUE io, VALUE str, VALUE ex) if (io_fflush(fptr) < 0) rb_sys_fail_on_write(fptr); - rb_io_set_nonblock(fptr); + rb_fd_set_nonblock(fptr->fd); n = write(fptr->fd, RSTRING_PTR(str), RSTRING_LEN(str)); RB_GC_GUARD(str); diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index f4ebccf9df..0c8beb2f95 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -1597,6 +1597,22 @@ class TestIO < Test::Unit::TestCase end end + def test_read_nonblock_file + make_tempfile do |path| + File.open(path, 'r') do |file| + file.read_nonblock(4) + end + end + end + + def test_write_nonblock_file + make_tempfile do |path| + File.open(path, 'w') do |file| + file.write_nonblock("Ruby") + end + end + end + def test_write_nonblock_simple_no_exceptions pipe(proc do |w| w.write_nonblock('1', exception: false) |