diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-23 21:38:41 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-23 21:38:41 +0000 |
commit | a6a7d988b4fe31a6f9a7662662ac8b501933446f (patch) | |
tree | 64174fa58b204eb67233d8f09abb4ead83e72113 /io.c | |
parent | 34f0e8edfd5df7e3ca3e6c125863805a95e0af6d (diff) | |
download | ruby-a6a7d988b4fe31a6f9a7662662ac8b501933446f.tar.gz |
io.c (io_fd_check_closed): prioritize cross-thread "stream closed"
This may fix failures from TestIO#test_recycled_fd_close because
interrupts may be missed due to TOCTOU in other places.
cf. http://ci.rvm.jp/results/trunk-nopara@silicon-docker/1475034
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -638,7 +638,8 @@ static void io_fd_check_closed(int fd) { if (fd < 0) { - rb_raise(rb_eIOError, closed_stream); + rb_thread_check_ints(); /* check for ruby_error_stream_closed */ + rb_raise(rb_eIOError, closed_stream); } } |