diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-01-25 14:09:46 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-01-25 14:09:46 +0000 |
commit | 6ebdbb30add7acc3edc49bc910c4931e5125fb10 (patch) | |
tree | 506265427cb6611bed7e2aad975e6777b8d5d456 /thread.c | |
parent | e090c62277bfd6730d799dbe7094e70013dbbdf7 (diff) | |
download | ruby-6ebdbb30add7acc3edc49bc910c4931e5125fb10.tar.gz |
* 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.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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); |