unix: don't close the fds we just setup
If a descriptor was being copied to an fd that *was not its current value*, it should get closed after being copied. But the existing code would close the fd, even when it no longer referred to the original descriptor. Don't do this, only close fds that are not in the desired range for the child process. See https://github.com/iojs/io.js/issues/862 PR-URL: https://github.com/libuv/libuv/pull/309 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
parent
a7e7bafcc3
commit
55cc5bac1b
@ -316,8 +316,8 @@ static void uv__process_child_init(const uv_process_options_t* options,
|
||||
for (fd = 0; fd < stdio_count; fd++) {
|
||||
use_fd = pipes[fd][1];
|
||||
|
||||
if (use_fd >= 0 && fd != use_fd)
|
||||
close(use_fd);
|
||||
if (use_fd >= stdio_count)
|
||||
uv__close(use_fd);
|
||||
}
|
||||
|
||||
if (options->cwd != NULL && chdir(options->cwd)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user