* fork.cc (slow_pid_reuse): Off-by-one.
This commit is contained in:
parent
84aeff4126
commit
5ba05cab08
@ -1,3 +1,7 @@
|
|||||||
|
Wed Nov 15 01:44:37 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
|
* fork.cc (slow_pid_reuse): Off-by-one.
|
||||||
|
|
||||||
Wed Nov 15 01:20:24 2000 Christopher Faylor <cgf@cygnus.com>
|
Wed Nov 15 01:20:24 2000 Christopher Faylor <cgf@cygnus.com>
|
||||||
|
|
||||||
Throughout use myself->ppid_handle rather than parent_alive.
|
Throughout use myself->ppid_handle rather than parent_alive.
|
||||||
|
@ -314,19 +314,21 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls)
|
|||||||
static void
|
static void
|
||||||
slow_pid_reuse (HANDLE h)
|
slow_pid_reuse (HANDLE h)
|
||||||
{
|
{
|
||||||
static NO_COPY HANDLE last_fork_procs[64];
|
static NO_COPY HANDLE last_fork_procs[64] = {0};
|
||||||
static NO_COPY unsigned nfork_procs = 0;
|
static NO_COPY unsigned nfork_procs = 0;
|
||||||
|
|
||||||
if (nfork_procs > (sizeof (last_fork_procs) / sizeof (last_fork_procs [0])))
|
if (nfork_procs >= (sizeof (last_fork_procs) / sizeof (last_fork_procs [0])))
|
||||||
nfork_procs = 0;
|
nfork_procs = 0;
|
||||||
/* Keep a list of handles to forked processes sitting around to prevent
|
/* Keep a list of handles to forked processes sitting around to prevent
|
||||||
Windows from reusing the same pid n times in a row. Having the same pids
|
Windows from reusing the same pid n times in a row. Having the same pids
|
||||||
close in succesion confuses bash. Keeping a handle open will stop
|
close in succesion confuses bash. Keeping a handle open will stop
|
||||||
windows from reusing the same pid. */
|
windows from reusing the same pid. */
|
||||||
if (last_fork_procs[nfork_procs])
|
if (last_fork_procs[nfork_procs])
|
||||||
CloseHandle (last_fork_procs[nfork_procs]);
|
ForceCloseHandle1 (last_fork_procs[nfork_procs], fork_stupidity);
|
||||||
if (!DuplicateHandle (hMainProc, h, hMainProc, &last_fork_procs[nfork_procs],
|
if (DuplicateHandle (hMainProc, h, hMainProc, &last_fork_procs[nfork_procs],
|
||||||
0, FALSE, DUPLICATE_SAME_ACCESS))
|
0, FALSE, DUPLICATE_SAME_ACCESS))
|
||||||
|
ProtectHandle1 (last_fork_procs[nfork_procs], fork_stupidity);
|
||||||
|
else
|
||||||
{
|
{
|
||||||
last_fork_procs[nfork_procs] = NULL;
|
last_fork_procs[nfork_procs] = NULL;
|
||||||
system_printf ("couldn't create last_fork_proc, %E");
|
system_printf ("couldn't create last_fork_proc, %E");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user