diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-29 00:43:34 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-29 00:43:34 +0000 |
| commit | 85195203f4eca03e163e5c9c2fbe503b0d40bd95 (patch) | |
| tree | 4f205ff7d06d4e2ca7faa110829297580841e306 | |
| parent | 7b835184d7dfbf503607b80e33ebf2349d6f7ab6 (diff) | |
io.c: convert to string at writev
* io.c (io_fwritev): needs conversion to string before accessing
the content, as well as single argument case, not to segfault.
[Feature #9323]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | io.c | 2 | ||||
| -rw-r--r-- | test/ruby/test_io.rb | 4 |
2 files changed, 5 insertions, 1 deletions
@@ -1590,7 +1590,7 @@ io_fwritev(int argc, VALUE *argv, rb_io_t *fptr) tmp_array = ALLOCV_N(VALUE, v2, argc); for (i = 0; i < argc; i++) { - str = argv[i]; + str = rb_obj_as_string(argv[i]); converted = 0; str = do_writeconv(str, fptr, &converted); if (converted) diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 7f86b4ebaf..0bedebfc16 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -1270,6 +1270,10 @@ class TestIO < Test::Unit::TestCase end end + def test_write_with_multiple_nonstring_arguments + assert_in_out_err([], "STDOUT.write(:foo, :bar)", ["foobar"]) + end + def test_write_non_writable with_pipe do |r, w| assert_raise(IOError) do |
