1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

test/ruby/test_io.rb: avoid EBADF

* test/ruby/test_io.rb (test_readpartial_locktmp): avoid EBADF
  [ruby-core:64773] [ruby-core:64775]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
normal 2014-09-05 22:49:29 +00:00
parent 3146827521
commit c3c1d6c60d
2 changed files with 24 additions and 14 deletions

View file

@ -1,3 +1,8 @@
Sat Sep 6 07:46:51 2014 Eric Wong <e@80x24.org>
* test/ruby/test_io.rb (test_readpartial_locktmp): avoid EBADF
[ruby-core:64773] [ruby-core:64775]
Sat Sep 6 01:34:31 2014 Tanaka Akira <akr@fsij.org>
* process.c (rb_f_exec): Call before_exec_async_signal_safe and

View file

@ -2866,24 +2866,29 @@ End
data = "a" * 100
th = nil
with_pipe do |r,w|
r.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
th = Thread.new {r.readpartial(100, buf)}
Thread.pass until th.stop?
buf.replace("")
assert_empty(buf, bug6099)
assert_predicate(th, :alive?)
w.write(data)
Thread.pass while th.alive?
end
assert_equal(data, buf, bug6099)
rescue RuntimeError # can't modify string; temporarily locked
ensure
if th
begin
r.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
th = Thread.new {r.readpartial(100, buf)}
Thread.pass until th.stop?
assert_equal 100, buf.bytesize
begin
buf.replace("")
rescue RuntimeError => e
assert_match(/can't modify string; temporarily locked/, e.message)
Thread.pass
end until buf.empty?
assert_empty(buf, bug6099)
assert_predicate(th, :alive?)
w.write(data)
Thread.pass while th.alive?
th.join
rescue IOError
end
end
assert_equal(data, buf, bug6099)
end
def test_advise_pipe