summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-25 14:09:46 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-01-25 14:09:46 +0000
commit6ebdbb30add7acc3edc49bc910c4931e5125fb10 (patch)
tree506265427cb6611bed7e2aad975e6777b8d5d456 /thread.c
parente090c62277bfd6730d799dbe7094e70013dbbdf7 (diff)
* thread.c (do_select): wrong conditions. [ruby-core:27753]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/thread.c b/thread.c
index bd0803539a..c56f3b72dc 100644
--- a/thread.c
+++ b/thread.c
@@ -2457,7 +2457,7 @@ do_select(int n, fd_set *read, fd_set *write, fd_set *except,
wait_100ms.tv_usec = 100 * 1000; /* 100 ms */
do {
- wait = (timeout == 0 || cmp_tv(&wait_100ms, timeout) > 0) ? &wait_100ms : timeout;
+ wait = (timeout == 0 || cmp_tv(&wait_100ms, timeout) < 0) ? &wait_100ms : timeout;
BLOCKING_REGION({
do {
result = select(n, read, write, except, wait);
@@ -2467,16 +2467,16 @@ do_select(int n, fd_set *read, fd_set *write, fd_set *except,
if (read) *read = orig_read;
if (write) *write = orig_write;
if (except) *except = orig_except;
- wait = &wait_100ms;
if (timeout) {
struct timeval elapsed;
gettimeofday(&elapsed, NULL);
subtract_tv(&elapsed, &start_time);
+ gettimeofday(&start_time, NULL);
if (!subtract_tv(timeout, &elapsed)) {
finish = 1;
break;
}
- if (cmp_tv(&wait_100ms, timeout) < 0) wait = timeout;
+ if (cmp_tv(&wait_100ms, timeout) > 0) wait = timeout;
}
} while (__th->interrupt_flag == 0);
}, 0, 0);