diff options
author | Christopher Faylor <me@cgf.cx> | 2005-10-19 22:25:46 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2005-10-19 22:25:46 +0000 |
commit | 0cdcb2345ad3e34fddcc8079d1c8d619a686ad06 (patch) | |
tree | 96c199f465a351463778717421e2d2dd59676b7a /winsup/cygwin/sigproc.cc | |
parent | fece95f7f38ff55b559dcd89c8be9b907bc256e0 (diff) | |
download | cygnal-0cdcb2345ad3e34fddcc8079d1c8d619a686ad06.tar.gz cygnal-0cdcb2345ad3e34fddcc8079d1c8d619a686ad06.tar.bz2 cygnal-0cdcb2345ad3e34fddcc8079d1c8d619a686ad06.zip |
* sigproc.cc (child_info::sync): Move check for !wr_proc_pipe lower.
* spawn.cc (spawn_guts): Correct check for top-level process.
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r-- | winsup/cygwin/sigproc.cc | 55 |
1 files changed, 25 insertions, 30 deletions
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index ae44ad7f1..297c89375 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -819,41 +819,36 @@ bool child_info::sync (pid_t pid, HANDLE& hProcess, DWORD howlong) { bool res; - if (!subproc_ready && !myself->wr_proc_pipe) - res = false; + HANDLE w4[2]; + unsigned n = 0; + unsigned nsubproc_ready; + + if (!subproc_ready) + nsubproc_ready = WAIT_OBJECT_0 + 3; else { - HANDLE w4[2]; - unsigned n = 0; - unsigned nsubproc_ready; - - if (!subproc_ready) - nsubproc_ready = WAIT_OBJECT_0 + 3; - else - { - w4[n++] = subproc_ready; - nsubproc_ready = 0; - } - w4[n++] = hProcess; + w4[n++] = subproc_ready; + nsubproc_ready = 0; + } + w4[n++] = hProcess; - sigproc_printf ("n %d, waiting for subproc_ready(%p) and child process(%p)", n, w4[0], w4[1]); - DWORD x = WaitForMultipleObjects (n, w4, FALSE, howlong); - x -= WAIT_OBJECT_0; - if (x >= n) - { - system_printf ("wait failed, pid %d, %E", pid); - res = false; - } - else + sigproc_printf ("n %d, waiting for subproc_ready(%p) and child process(%p)", n, w4[0], w4[1]); + DWORD x = WaitForMultipleObjects (n, w4, FALSE, howlong); + x -= WAIT_OBJECT_0; + if (x >= n) + { + system_printf ("wait failed, pid %d, %E", pid); + res = false; + } + else + { + if (type == _PROC_EXEC && x == nsubproc_ready && myself->wr_proc_pipe) { - if (type == _PROC_EXEC && x == nsubproc_ready) - { - ForceCloseHandle1 (hProcess, childhProcess); - hProcess = NULL; - } - sigproc_printf ("process %d synchronized, WFMO returned %d", pid, x); - res = true; + ForceCloseHandle1 (hProcess, childhProcess); + hProcess = NULL; } + sigproc_printf ("process %d synchronized, WFMO returned %d", pid, x); + res = true; } return res; } |