From e7895ac92c8398b1c554e218c373316356ccbd19 Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Thu, 4 May 2000 13:40:05 +0000 Subject: close dump file descriptors in children (11151) --- Src/Modules/zpty.c | 2 ++ Src/exec.c | 1 + Src/parse.c | 16 ++++++++++++++++ 3 files changed, 19 insertions(+) (limited to 'Src') diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c index 38da5d500..23b1f4209 100644 --- a/Src/Modules/zpty.c +++ b/Src/Modules/zpty.c @@ -356,6 +356,8 @@ newptycmd(char *nam, char *pname, char **args, int echo, int block) if (SHTTY != -1) close(SHTTY); + closedumps(); + execve(cmd, args, environ); exit(0); } diff --git a/Src/exec.c b/Src/exec.c index 33f28b53b..7913dec2e 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -356,6 +356,7 @@ zexecve(char *pth, char **argv) if (!*eep) eep[1] = NULL; *eep = buf; + closedumps(); execve(pth, argv, environ); /* If the execve returns (which in general shouldn't happen), * diff --git a/Src/parse.c b/Src/parse.c index b9ebad9a7..453e45ad0 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -3030,6 +3030,16 @@ decrdumpcount(FuncDump f) } } +/**/ +mod_export void +closedumps(void) +{ + FuncDump p; + + for (p = dumps; p; p = p->next) + zclose(p->fd); +} + #else void @@ -3042,6 +3052,11 @@ decrdumpcount(FuncDump f) { } +void +closedumps(void) +{ +} + #endif /**/ @@ -3070,3 +3085,4 @@ dump_autoload(char *nam, char *file, int on, char *ops, int func) } return ret; } + -- cgit 1.4.1