diff options
-rw-r--r-- | spawn.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -147,13 +147,7 @@ static void bfs_spawn_exec(const char *exe, const struct bfs_spawn *ctx, char ** close(pipefd[0]); for (const struct bfs_spawn_action *action = actions; action; action = action->next) { - // Pretend the error-reporting pipe doesn't exist - if (action->in_fd == pipefd[1]) { - errno = EBADF; - goto fail; - } - - // Move the pipe out of the way if necessary + // Move the error-reporting pipe out of the way if necessary... if (action->out_fd == pipefd[1]) { int fd = dup_cloexec(pipefd[1]); if (fd < 0) { @@ -163,6 +157,12 @@ static void bfs_spawn_exec(const char *exe, const struct bfs_spawn *ctx, char ** pipefd[1] = fd; } + // ... and pretend the pipe doesn't exist + if (action->in_fd == pipefd[1]) { + errno = EBADF; + goto fail; + } + switch (action->op) { case BFS_SPAWN_CLOSE: if (close(action->out_fd) != 0) { |