summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/exec.c5
-rw-r--r--Src/init.c2
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);