ksh/ksh93-subshell_close_fd.patch

18 lines
459 B
Diff

--- src/cmd/ksh93/sh/main.c
+++ src/cmd/ksh93/sh/main.c 2006-11-20 13:47:33.000000000 +0000
@@ -389,7 +389,13 @@ static void exfile(register Shell_t *shp
{
if(fno > 0)
{
- fno = sh_iomovefd(fno);
+ int r;
+ if(fno < 10 && ((r=sh_fcntl(fno,F_DUPFD,10))>=10))
+ {
+ shp->fdstatus[r] = shp->fdstatus[fno];
+ sh_close(fno);
+ fno = r;
+ }
fcntl(fno,F_SETFD,FD_CLOEXEC);
shp->fdstatus[fno] |= IOCLEX;
iop = sh_iostream(fno);