Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-09-02 21:12:37 +0400
committerChristopher Faylor <me@cgf.cx>2005-09-02 21:12:37 +0400
commit414808f9e01ce103d2bc67d4ddaa802125ce5512 (patch)
tree2fc20623e4d929db4b68506c21a5a74edfb41276 /winsup/cygwin/fork.cc
parent8f36ef2f33ab096ea580dc4fdbaf6565b561e65f (diff)
* Makefile.in (CXXFLAGS): Use 'override' to correctly set flags to generate
dependencies when invoked from top-level make.
Diffstat (limited to 'winsup/cygwin/fork.cc')
-rw-r--r--winsup/cygwin/fork.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc
index 785aabd4f..f16eabc32 100644
--- a/winsup/cygwin/fork.cc
+++ b/winsup/cygwin/fork.cc
@@ -283,8 +283,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_
pthread::atforkprepare ();
- int c_flags = GetPriorityClass (hMainProc) /*|
- CREATE_NEW_PROCESS_GROUP*/;
+ int c_flags = GetPriorityClass (hMainProc);
STARTUPINFO si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL};
/* If we don't have a console, then don't create a console for the
@@ -336,7 +335,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_
/* Remove impersonation */
cygheap->user.deimpersonate ();
- syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %x, 0, 0, %p, %p)",
+ syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %p, 0, 0, %p, %p)",
myself->progname, myself->progname, c_flags, &si, &pi);
bool locked = __malloc_lock ();
rc = CreateProcess (myself->progname, /* image to run */
@@ -418,7 +417,8 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_
/* Wait for subproc to initialize itself. */
if (!ch.sync (child->pid, pi.hProcess, FORK_WAIT_TIMEOUT))
{
- system_printf ("child %d died waiting for longjmp before initialization", child_pid);
+ if (NOTSTATE (child, PID_EXITED))
+ system_printf ("child %d died waiting for longjmp before initialization", child_pid);
goto cleanup;
}
@@ -469,7 +469,8 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_
goto cleanup;
else if (!ch.sync (child->pid, pi.hProcess, FORK_WAIT_TIMEOUT))
{
- system_printf ("child %d died waiting for dll loading", child_pid);
+ if (NOTSTATE (child, PID_EXITED))
+ system_printf ("child %d died waiting for dll loading", child_pid);
goto cleanup;
}
@@ -506,7 +507,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_
__malloc_unlock ();
/* Remember to de-allocate the fd table. */
- if (pi.hProcess)
+ if (pi.hProcess && !child.hProcess)
ForceCloseHandle1 (pi.hProcess, childhProc);
if (pi.hThread)
ForceCloseHandle (pi.hThread);