diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/exec.c | 5 | ||||
-rw-r--r-- | Src/init.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/Src/exec.c b/Src/exec.c index df915e152..dccdc2b0d 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -3309,7 +3309,10 @@ execcmd(Estate state, int input, int output, int how, int last1) } if (type == WC_SIMPLE) { if (varspc) { - addvars(state, varspc, ADDVAR_EXPORT|ADDVAR_RESTRICT); + int addflags = ADDVAR_EXPORT|ADDVAR_RESTRICT; + if (forked) + addflags |= ADDVAR_RESTORE; + addvars(state, varspc, addflags); if (errflag) _exit(1); } diff --git a/Src/init.c b/Src/init.c index 7032ff8ae..53c4fbd72 100644 --- a/Src/init.c +++ b/Src/init.c @@ -281,7 +281,7 @@ parseargs(char **argv, char **runscript) /**/ static void -parseopts_insert(LinkList optlist, void *base, int optno) +parseopts_insert(LinkList optlist, char *base, int optno) { LinkNode node; void *ptr = base + (optno < 0 ? -optno : optno); |