diff -urp src.old/winsup/cygwin/thread.cc src/winsup/cygwin/thread.cc --- src.old/winsup/cygwin/thread.cc 2003-01-10 09:42:37.000000000 +0100 +++ src/winsup/cygwin/thread.cc 2003-01-13 11:50:30.000000000 +0100 @@ -481,10 +481,10 @@ sigwaitinfo () system () tcdrain () *usleep () -wait () -wait3() +*wait () +*wait3() waitid () -waitpid () +*waitpid () write () writev () diff -urp src.old/winsup/cygwin/wait.cc src/winsup/cygwin/wait.cc --- src.old/winsup/cygwin/wait.cc 2002-11-27 18:22:46.000000000 +0100 +++ src/winsup/cygwin/wait.cc 2003-01-13 11:57:46.000000000 +0100 @@ -15,6 +15,7 @@ details. */ #include "cygerrno.h" #include "sigproc.h" #include "perthread.h" +#include "thread.h" /* This is called _wait and not wait because the real wait is defined in libc/syscalls/syswait.c. It calls us. */ @@ -51,6 +52,8 @@ wait4 (int intpid, int *status, int opti HANDLE waitfor; bool sawsig; + pthread_testcancel (); + while (1) { sig_dispatch_pending (0); @@ -84,7 +87,7 @@ wait4 (int intpid, int *status, int opti if ((waitfor = w->ev) == NULL) goto nochildren; - res = WaitForSingleObject (waitfor, INFINITE); + res = pthread::cancelable_wait (waitfor, INFINITE); sigproc_printf ("%d = WaitForSingleObject (...)", res);