summaryrefslogtreecommitdiff
path: root/shell/msh.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/msh.c')
-rw-r--r--shell/msh.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/shell/msh.c b/shell/msh.c
index 6555604..fd287f1 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -2797,15 +2797,13 @@ static int forkexec(struct op *t, int *pin, int *pout, int no_fork, char **wp)
if (!bltin)
export(lookup(cp));
- if (pin) {
+ if (pin) { /* NB: close _first_, then move fds! */
+ close(pin[1]);
xmove_fd(pin[0], 0);
- if (pin[1] != 0)
- close(pin[1]);
}
if (pout) {
+ close(pout[0]);
xmove_fd(pout[1], 1);
- if (pout[0] > 1)
- close(pout[0]);
}
iopp = t->ioact;