From eaf13e9eabfc0531d6e3dedc090f0f495c8139d4 Mon Sep 17 00:00:00 2001 From: Paul Ackersviller Date: Mon, 23 Apr 2007 04:20:22 +0000 Subject: Merge of 21049: Don't close process substitution file descriptors for external programmes --- Src/utils.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'Src/utils.c') diff --git a/Src/utils.c b/Src/utils.c index e9a2e8784..66585f10e 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -1078,10 +1078,11 @@ movefd(int fd) if(fd != -1) { if (fd > max_zsh_fd) { while (fd >= fdtable_size) - fdtable = zrealloc(fdtable, (fdtable_size *= 2)); + fdtable = zrealloc(fdtable, + (fdtable_size *= 2)*sizeof(*fdtable)); max_zsh_fd = fd; } - fdtable[fd] = 1; + fdtable[fd] = FDT_INTERNAL; } return fd; } @@ -1096,7 +1097,7 @@ redup(int x, int y) zclose(y); else if (x != y) { while (y >= fdtable_size) - fdtable = zrealloc(fdtable, (fdtable_size *= 2)); + fdtable = zrealloc(fdtable, (fdtable_size *= 2)*sizeof(*fdtable)); dup2(x, y); if ((fdtable[y] = fdtable[x]) && y > max_zsh_fd) max_zsh_fd = y; @@ -1111,8 +1112,8 @@ mod_export int zclose(int fd) { if (fd >= 0) { - fdtable[fd] = 0; - while (max_zsh_fd > 0 && !fdtable[max_zsh_fd]) + fdtable[fd] = FDT_UNUSED; + while (max_zsh_fd > 0 && fdtable[max_zsh_fd] == FDT_UNUSED) max_zsh_fd--; if (fd == coprocin) coprocin = -1; -- cgit 1.4.1