* pinfo.cc (EnumProcessesNT): Avoid 0 pids.

(EnumProcesses9x): Ditto.
* sigproc.cc (remove_childe): Eliminate.
(proc_subproc): Move remove_child stuff here.
(wait_subproc): Synchronize with proc_subproc when error occurs.  Add more
debugging info.
* sigproc.h (procstuff): Add an entry.
* spawn.cc (spawn_guts): Add sigframe here.
This commit is contained in:
Christopher Faylor
2000-11-04 05:54:57 +00:00
parent 46209564d4
commit e46db834d9
5 changed files with 39 additions and 30 deletions

View File

@@ -327,14 +327,17 @@ EnumProcessesNT (DWORD* &pidlist, DWORD &npidlist)
SYSTEM_PROCESSES *px = procs;
for (;;)
{
if (nelem >= npidlist)
if (px->ProcessId)
{
npidlist += slop_pidlist;
pidlist = (DWORD *) realloc (pidlist, size_pidlist (npidlist));
if (nelem >= npidlist)
{
npidlist += slop_pidlist;
pidlist = (DWORD *) realloc (pidlist, size_pidlist (npidlist));
}
pidlist[nelem++] = cygwin_pid (px->ProcessId);
if (!px->NextEntryDelta)
break;
}
pidlist[nelem++] = cygwin_pid (px->ProcessId);
if (!px->NextEntryDelta)
break;
px = (SYSTEM_PROCESSES *) ((char *) px + px->NextEntryDelta);
}
@@ -359,6 +362,8 @@ EnumProcesses9x (DWORD* &pidlist, DWORD &npidlist)
if (myProcess32First(h, &proc))
do
{
if (!proc.th32ProcessID)
continue;
if (nelem >= npidlist)
{
npidlist += slop_pidlist;