summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authoreban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-19 08:15:25 +0000
committereban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-11-19 08:15:25 +0000
commit173ee56f1d2b545b3abf6f70d2b09a0a51e72529 (patch)
tree74b2c554240ea5eccad9fce8e5c14181ce4e0daa /eval.c
parentd9b62d9e0fa0fd4f678e8f3c159cca17c62f6043 (diff)
* eval.c : oops.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/eval.c b/eval.c
index 587b329b95..6288a97858 100644
--- a/eval.c
+++ b/eval.c
@@ -7807,20 +7807,22 @@ rb_thread_select(max, read, write, except, timeout)
TRAP_BEG;
n = select(max, read, write, except, tvp);
TRAP_END;
- switch (errno) {
- case EINTR:
+ if (n < 0) {
+ switch (errno) {
+ case EINTR:
#ifdef ERESTART
- case ERESTART:
+ case ERESTART:
#endif
- if (timeout) {
- double d = timeofday() - limit;
+ if (timeout) {
+ double d = timeofday() - limit;
- tv.tv_sec = (unsigned int)d;
- tv.tv_usec = (long)((d-(double)tv.tv_sec)*1e6);
+ tv.tv_sec = (unsigned int)d;
+ tv.tv_usec = (long)((d-(double)tv.tv_sec)*1e6);
+ }
+ continue;
+ default:
+ break;
}
- continue;
- default:
- break;
}
return n;
}