From f02400f7c9db8176a7cc49eb8e4b6450ae5901c2 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 15 Mar 2006 00:29:14 +0000 Subject: * child_info.h (child_info_fork::fork_retry): Declare new function. * dcrt0.cc (child_info_fork::fork_retry): Define new function. * fork.cc (frok::parent): Move retry decision into child_info_fork::fork_retry and honor what it tells us to do. * sigproc.cc (sig_send): Unhold signals on __SIGEXIT. --- winsup/cygwin/fork.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'winsup/cygwin/fork.cc') diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 7aab31520..260960895 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -326,12 +326,9 @@ frok::parent (void *stack_here) /* Wait for subproc to initialize itself. */ if (!ch.sync (pi.dwProcessId, pi.hProcess, FORK_WAIT_TIMEOUT)) { - DWORD exit_code; - if (GetExitCodeProcess (pi.hProcess, &exit_code) && exit_code == EXITCODE_RETRY) - { - ch.retry--; - continue; - } + DWORD exit_code = ch.fork_retry (pi.hProcess); + if (!exit_code) + continue; this_errno = EAGAIN; /* Not thread safe, but do we care? */ static char buf[sizeof("died waiting for longjmp before " -- cgit v1.2.3