* sigproc.cc (proc_subproc): Fix long-standing problem. Only wait for "all

processes" if pid == -1 -- not just if pid is negative.
(proc_can_be_signalled): Fix another long-standing problem.  Set correct errno
when detecting an exited process.
This commit is contained in:
Christopher Faylor 2004-12-17 17:42:03 +00:00
parent 0d549859a5
commit 8232f2e050
2 changed files with 16 additions and 12 deletions

View File

@ -1,3 +1,10 @@
2004-12-17 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (proc_subproc): Fix long-standing problem. Only wait for
"all processes" if pid == -1 -- not just if pid is negative.
(proc_can_be_signalled): Fix another long-standing problem. Set
correct errno when detecting an exited process.
2004-12-16 Thomas Wolff <towo@computer.org>
* fhandler_console.cc (get_win32_attr): Avoid inappropriate intensity

View File

@ -169,20 +169,17 @@ get_proc_lock (DWORD what, DWORD val)
static bool __stdcall
proc_can_be_signalled (_pinfo *p)
{
if (p->sendsig == INVALID_HANDLE_VALUE)
if (p->sendsig != INVALID_HANDLE_VALUE)
{
set_errno (EPERM);
return false;
if (p == myself_nowait || p == myself)
return hwait_sig;
if (ISSTATE (p, PID_INITIALIZING) ||
(((p)->process_state & (PID_ACTIVE | PID_IN_USE)) ==
(PID_ACTIVE | PID_IN_USE)))
return true;
}
if (p == myself_nowait || p == myself)
return hwait_sig;
if (ISSTATE (p, PID_INITIALIZING) ||
(((p)->process_state & (PID_ACTIVE | PID_IN_USE)) ==
(PID_ACTIVE | PID_IN_USE)))
return true;
set_errno (ESRCH);
return false;
}
@ -278,7 +275,7 @@ proc_subproc (DWORD what, DWORD val)
case PROC_WAIT:
wval->ev = NULL; // Don't know event flag yet
if (wval->pid <= 0)
if (wval->pid == -1)
child = NULL; // Not looking for a specific pid
else if (!mychild (wval->pid))
goto out; // invalid pid. flag no such child