diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-01-30 22:03:57 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-01-30 22:03:57 +0000 |
commit | 4b9a21cdd6881325836ec54d1daca47c9ce4fa02 (patch) | |
tree | 1f57203b2233d5b8ea6852d0cbbf9a417d7a47df /test | |
parent | 5c988df0dd687ad74ef20506f5a57657ccae3014 (diff) | |
download | ruby-4b9a21cdd6881325836ec54d1daca47c9ce4fa02.tar.gz |
io.c (rb_io_syswrite): avoid leaving garbage after write
As with IO#write, IO#syswrite also generates garbage which can
be harmful in hand-coded read-write loops.
* io.c (swrite_arg, swrite_do, swrite_end): new
(rb_io_syswrite): use new functions to cleanup garbage
[ruby-core:78898] [Bug #13085]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_io.rb | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index c501edd0ab..3cc410881c 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -3512,11 +3512,13 @@ __END__ with_pipe do |r, w| before = ObjectSpace.count_objects(res)[:T_STRING] n = w.write(buf) + s = w.syswrite(buf) after = ObjectSpace.count_objects(res)[:T_STRING] assert_equal before, after, 'no strings left over after write [ruby-core:78898] [Bug #13085]' assert_not_predicate buf, :frozen?, 'no inadvertant freeze' - assert_equal buf.bytesize, n, 'wrote expected size' + assert_equal buf.bytesize, n, 'write wrote expected size' + assert_equal s, n, 'syswrite wrote expected size' end end end |