summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/exec.c1
-rw-r--r--Src/utils.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/Src/exec.c b/Src/exec.c
index e68237948..ca9cf0f4d 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -1980,6 +1980,7 @@ addfd(int forked, int *save, struct multio **mfds, int fd1, int fd2, int rflag,
*/
if (fdN < 0 && errno != EBADF) {
zerr("cannot duplicate fd %d: %e", fd1, errno);
+ mfds[fd1] = NULL;
closemnodes(mfds);
return;
}
diff --git a/Src/utils.c b/Src/utils.c
index ad4ffca92..a12914787 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -1631,7 +1631,8 @@ movefd(int fd)
#else
int fe = movefd(dup(fd));
#endif
- zclose(fd);
+ if (fe != -1)
+ zclose(fd);
fd = fe;
}
if(fd != -1) {