* 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:
parent
0d549859a5
commit
8232f2e050
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user