Fix only one the two fds created by self_pipe having CLOEXEC and NONBLOCK set
This commit is contained in:
parent
1dd489cf0c
commit
365c992f80
@ -114,12 +114,14 @@ self_pipe(int fds[2]) {
|
|||||||
int flags;
|
int flags;
|
||||||
flags = pipe(fds);
|
flags = pipe(fds);
|
||||||
if (flags != 0) return false;
|
if (flags != 0) return false;
|
||||||
flags = fcntl(fds[0], F_GETFD);
|
for (int i = 0; i < 2; i++) {
|
||||||
if (flags == -1) { return false; }
|
flags = fcntl(fds[i], F_GETFD);
|
||||||
if (fcntl(fds[0], F_SETFD, flags | FD_CLOEXEC) == -1) { return false; }
|
if (flags == -1) { return false; }
|
||||||
flags = fcntl(fds[0], F_GETFL);
|
if (fcntl(fds[i], F_SETFD, flags | FD_CLOEXEC) == -1) { return false; }
|
||||||
if (flags == -1) { return false; }
|
flags = fcntl(fds[i], F_GETFL);
|
||||||
if (fcntl(fds[0], F_SETFL, flags | O_NONBLOCK) == -1) { return false; }
|
if (flags == -1) { return false; }
|
||||||
|
if (fcntl(fds[i], F_SETFL, flags | O_NONBLOCK) == -1) { return false; }
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user