about summary refs log tree commit diff
path: root/Src/utils.c
diff options
context:
space:
mode:
authorPaul Ackersviller <packersv@users.sourceforge.net>2007-04-23 04:20:22 +0000
committerPaul Ackersviller <packersv@users.sourceforge.net>2007-04-23 04:20:22 +0000
commiteaf13e9eabfc0531d6e3dedc090f0f495c8139d4 (patch)
tree3d0fc83c6414b476099c0c572f11cc69b73b21b6 /Src/utils.c
parentf355b42e167ab7e2263c23f52a237a6706b610b6 (diff)
downloadzsh-eaf13e9eabfc0531d6e3dedc090f0f495c8139d4.tar.gz
zsh-eaf13e9eabfc0531d6e3dedc090f0f495c8139d4.tar.xz
zsh-eaf13e9eabfc0531d6e3dedc090f0f495c8139d4.zip
Merge of 21049: Don't close process substitution file descriptors for external programmes
Diffstat (limited to 'Src/utils.c')
-rw-r--r--Src/utils.c11
1 files changed, 6 insertions, 5 deletions
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;