Fix issue #11432. if the stdin pipe is the same file descriptor as either stdout or stderr

in the _posixsubprocess C extension module it would unintentionally close the fds and raise
an error.
This commit is contained in:
Gregory P. Smith 2011-03-15 14:56:39 -04:00
parent 112bb3ac6a
commit 8121898ec5
1 changed files with 2 additions and 2 deletions

View File

@ -99,10 +99,10 @@ static void child_exec(char *const exec_array[],
if (p2cread > 2) {
POSIX_CALL(close(p2cread));
}
if (c2pwrite > 2) {
if (c2pwrite > 2 && c2pwrite != p2cread) {
POSIX_CALL(close(c2pwrite));
}
if (errwrite != c2pwrite && errwrite > 2) {
if (errwrite != c2pwrite && errwrite != p2cread && errwrite > 2) {
POSIX_CALL(close(errwrite));
}