まつもと ゆきひろです

In message "[ruby-dev:9733] Re: SEGV on thread and socket"
    on 00/05/17, WATANABE Hirofumi <Hirofumi.Watanabe / jp.sony.com> writes:

|と思ったらまだ調子悪いです.
|これもなぜか Linux だけ timeout します.

些細なミスがいっぱい残ってました。

--- eval.c	2000/05/17 04:38:09	1.46
+++ eval.c	2000/05/17 06:31:10
@@ -6738,5 +6738,5 @@
 	    copy_fds(&exceptfds, &th->exceptfds, th->fd);
-	    th->fd = 0;
 	    if (max < th->fd) max = th->fd;
 	    need_select = 1;
+	    th->fd = 0;
 	}
@@ -6887,4 +6887,5 @@
     FD_ZERO(&curr_thread->writefds);
-    FD_ZERO(&curr_thread->exceptfds);
     FD_SET(fd, &curr_thread->writefds);
+    FD_ZERO(&curr_thread->exceptfds);
+    curr_thread->fd = fd+1;
     curr_thread->wait_for = WAIT_SELECT;
@@ -7013,3 +7014,3 @@
 	    (double)timeout->tv_sec + (double)timeout->tv_usec*1e-6;
-	curr_thread->wait_for = WAIT_TIME;
+	curr_thread->wait_for |= WAIT_TIME;
     }