* io.c (rb_io_wait_writable): don't use rb_thread_wait_fd()

because it is for waiting until io readable.

* io.c (rb_io_wait_writable): always use rb_thread_fd_writable()
  instaed of bare rb_wait_for_single_fd(). we shouldn't ignore
  return value.
* io.c (rb_io_wait_readable): ditto. always use rb_thread_wait_fd().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kosaki 2012-12-18 10:07:15 +00:00
Родитель 005db82d36
Коммит 06dcf7840f
2 изменённых файлов: 13 добавлений и 8 удалений

Просмотреть файл

@ -1,3 +1,14 @@
Tue Dec 18 18:57:58 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* io.c (rb_io_wait_writable): don't use rb_thread_wait_fd()
because it is for waiting until io readable.
* io.c (rb_io_wait_writable): always use rb_thread_fd_writable()
instaed of bare rb_wait_for_single_fd(). we shouldn't ignore
return value.
* io.c (rb_io_wait_readable): ditto. always use rb_thread_wait_fd().
Tue Dec 18 18:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* thread.c (rb_thread_wait_fd_rw): fix infinite loop bug.

10
io.c
Просмотреть файл

@ -1050,14 +1050,11 @@ rb_io_wait_readable(int f)
#if defined(ERESTART)
case ERESTART:
#endif
rb_thread_wait_fd(f);
return TRUE;
case EAGAIN:
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
rb_wait_for_single_fd(f, RB_WAITFD_IN, NULL);
rb_thread_wait_fd(f);
return TRUE;
default:
@ -1076,14 +1073,11 @@ rb_io_wait_writable(int f)
#if defined(ERESTART)
case ERESTART:
#endif
rb_thread_wait_fd(f);
return TRUE;
case EAGAIN:
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
rb_wait_for_single_fd(f, RB_WAITFD_OUT, NULL);
rb_thread_fd_writable(f);
return TRUE;
default: