diff --git a/io.c b/io.c index 29b25d74f1..a60c17a92b 100644 --- a/io.c +++ b/io.c @@ -8565,14 +8565,17 @@ rb_io_advise(int argc, VALUE *argv, VALUE io) * write_nonblock and IO.select as follows: * IO::WaitReadable should also be rescued for SSL renegotiation in OpenSSL::SSL::SSLSocket. * - * begin - * result = io_like.write_nonblock(string) - * rescue IO::WaitReadable - * IO.select([io_like]) - * retry - * rescue IO::WaitWritable - * IO.select(nil, [io_like]) - * retry + * while 0 < string.bytesize + * begin + * written = io_like.write_nonblock(string) + * rescue IO::WaitReadable + * IO.select([io_like]) + * retry + * rescue IO::WaitWritable + * IO.select(nil, [io_like]) + * retry + * end + * string = string.byteslice(written..-1) * end * * === Parameters