summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/sigproc.cc
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-10-19 22:25:46 +0000
committerChristopher Faylor <me@cgf.cx>2005-10-19 22:25:46 +0000
commit0cdcb2345ad3e34fddcc8079d1c8d619a686ad06 (patch)
tree96c199f465a351463778717421e2d2dd59676b7a /winsup/cygwin/sigproc.cc
parentfece95f7f38ff55b559dcd89c8be9b907bc256e0 (diff)
downloadcygnal-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.cc55
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;
}