summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-18 10:07:05 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-18 10:07:05 +0000
commit005db82d368d9e030b3b370ceba8b46e739b2b2b (patch)
tree4654da4b8cb5ce1502666ffe03b18c16e8aa83ff
parentdff59f6c5df7d995d02e8173a8ce42ff9c552e88 (diff)
* thread.c (rb_thread_wait_fd_rw): fix infinite loop bug.
rb_wait_for_single_fd() never return positive number. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--thread.c8
2 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index c28469867d..59cd9dc300 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Dec 18 18:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * thread.c (rb_thread_wait_fd_rw): fix infinite loop bug.
+ rb_wait_for_single_fd() never return positive number.
+
Tue Dec 18 17:24:40 2012 Eric Hodel <drbrain@segment7.net>
* lib/rdoc/encoding.rb: Do not remove #! line from document when
diff --git a/thread.c b/thread.c
index 823ec03053..c94c10c417 100644
--- a/thread.c
+++ b/thread.c
@@ -3320,12 +3320,10 @@ rb_thread_wait_fd_rw(int fd, int read)
if (fd < 0) {
rb_raise(rb_eIOError, "closed stream");
}
- while (result <= 0) {
- result = rb_wait_for_single_fd(fd, events, NULL);
- if (result < 0) {
- rb_sys_fail(0);
- }
+ result = rb_wait_for_single_fd(fd, events, NULL);
+ if (result < 0) {
+ rb_sys_fail(0);
}
thread_debug("rb_thread_wait_fd_rw(%d, %s): done\n", fd, read ? "read" : "write");