Also exit waitpid() loop when pid == 0. Fixes a problem where the sudo

process would spin eating up CPU until sendmail finished when it has
to send mail.
This commit is contained in:
Todd C. Miller
2003-06-09 20:07:56 +00:00
parent 7e53863e55
commit 27ad285a03

View File

@@ -592,10 +592,12 @@ reapchild(sig)
int sig;
{
int status, serrno = errno;
#ifdef sudo_waitpid
while (sudo_waitpid(-1, &status, WNOHANG) != -1 || errno == EINTR)
;
pid_t pid;
do {
pid = sudo_waitpid(-1, &status, WNOHANG);
} while (pid != 0 && (pid != -1 || errno == EINTR));
#else
(void) wait(&status);
#endif