Bug 1122303 - nsIProcess::Run needs to handle EINTR on Mac (r=nfroyd)

This commit is contained in:
Bill McCloskey 2015-01-16 09:57:33 -08:00
Родитель 5c867be0e8
Коммит 3337f70861
1 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -37,6 +37,7 @@
#include <crt_externs.h>
#include <spawn.h>
#include <sys/wait.h>
#include <sys/errno.h>
#endif
#include <sys/types.h>
#include <signal.h>
@ -264,7 +265,11 @@ nsProcess::Monitor(void* aArg)
#ifdef XP_MACOSX
int exitCode = -1;
int status = 0;
if (waitpid(process->mPid, &status, 0) == process->mPid) {
pid_t result;
do {
result = waitpid(process->mPid, &status, 0);
} while (result == -1 && errno == EINTR);
if (result == process->mPid) {
if (WIFEXITED(status)) {
exitCode = WEXITSTATUS(status);
} else if (WIFSIGNALED(status)) {