From 2c9375ba69c5bfba56e8cc1ab4ac7c2ff01d24f3 Mon Sep 17 00:00:00 2001 From: kosaki Date: Mon, 12 Sep 2011 11:36:06 +0000 Subject: * thread.c (rb_thread_select): fix to ignore an argument modification of rb_thread_fd_select(). based on a patch by Eric Wong. [Bug #5306] [ruby-core:39435] * thread.c (rb_fd_rcopy): New. for reverse fd copy. * test/-ext-/old_thread_select/test_old_thread_select.rb (test_old_select_false_positive): test for bug5306. * ext/-test-/old_thread_select/old_thread_select.c (fdset2array): New. convert fdsets to array. * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select): return 'read', 'write', 'except' argument of rb_thread_select() to ruby script. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/-ext-/old_thread_select/test_old_thread_select.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'test/-ext-/old_thread_select') diff --git a/test/-ext-/old_thread_select/test_old_thread_select.rb b/test/-ext-/old_thread_select/test_old_thread_select.rb index b40f3a429b..b70e1d3862 100644 --- a/test/-ext-/old_thread_select/test_old_thread_select.rb +++ b/test/-ext-/old_thread_select/test_old_thread_select.rb @@ -34,6 +34,20 @@ class TestOldThreadSelect < Test::Unit::TestCase end end + def test_old_select_false_positive + bug5306 = '[ruby-core:39435]' + with_pipe do |r2, w2| + with_pipe do |r, w| + t0 = Time.now + w.syswrite '.' + rfds = [ r.fileno, r2.fileno ] + rc = IO.old_thread_select(rfds, nil, nil, nil) + assert_equal [ r.fileno ], rfds, bug5306 + assert_equal 1, rc, bug5306 + end + end + end + def test_old_select_read_write_check with_pipe do |r, w| w.syswrite('.') -- cgit v1.2.3