diff options
author | Ron Yorston <rmy@pobox.com> | 2019-03-12 13:47:44 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2019-03-12 13:47:44 +0000 |
commit | fd0e6a01a68047e959ef13f3161ce302b438d2b1 (patch) | |
tree | c9f15afd1220835af46ddf8e72c077c80edbf005 /shell | |
parent | db255bbadf9c6b219b29d06d4958fbd7967eb8b4 (diff) | |
parent | 2452247ea33c1c70263bf4cbc11b3170366ff2ea (diff) | |
download | busybox-w32-fd0e6a01a68047e959ef13f3161ce302b438d2b1.tar.gz busybox-w32-fd0e6a01a68047e959ef13f3161ce302b438d2b1.tar.bz2 busybox-w32-fd0e6a01a68047e959ef13f3161ce302b438d2b1.zip |
Merge branch 'busybox' into merge
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/shell/ash.c b/shell/ash.c index 8ed0f19f3..8daf263dc 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -9631,8 +9631,11 @@ evaltree(union node *n, int flags) | |||
9631 | { | 9631 | { |
9632 | int checkexit = 0; | 9632 | int checkexit = 0; |
9633 | int (*evalfn)(union node *, int); | 9633 | int (*evalfn)(union node *, int); |
9634 | struct stackmark smark; | ||
9634 | int status = 0; | 9635 | int status = 0; |
9635 | 9636 | ||
9637 | setstackmark(&smark); | ||
9638 | |||
9636 | if (n == NULL) { | 9639 | if (n == NULL) { |
9637 | TRACE(("evaltree(NULL) called\n")); | 9640 | TRACE(("evaltree(NULL) called\n")); |
9638 | goto out; | 9641 | goto out; |
@@ -9746,6 +9749,7 @@ evaltree(union node *n, int flags) | |||
9746 | if (flags & EV_EXIT) | 9749 | if (flags & EV_EXIT) |
9747 | raise_exception(EXEXIT); | 9750 | raise_exception(EXEXIT); |
9748 | 9751 | ||
9752 | popstackmark(&smark); | ||
9749 | TRACE(("leaving evaltree (no interrupts)\n")); | 9753 | TRACE(("leaving evaltree (no interrupts)\n")); |
9750 | return exitstatus; | 9754 | return exitstatus; |
9751 | } | 9755 | } |
@@ -9806,14 +9810,12 @@ evalfor(union node *n, int flags) | |||
9806 | struct arglist arglist; | 9810 | struct arglist arglist; |
9807 | union node *argp; | 9811 | union node *argp; |
9808 | struct strlist *sp; | 9812 | struct strlist *sp; |
9809 | struct stackmark smark; | ||
9810 | int status = 0; | 9813 | int status = 0; |
9811 | 9814 | ||
9812 | errlinno = lineno = n->ncase.linno; | 9815 | errlinno = lineno = n->ncase.linno; |
9813 | if (funcline) | 9816 | if (funcline) |
9814 | lineno -= funcline - 1; | 9817 | lineno -= funcline - 1; |
9815 | 9818 | ||
9816 | setstackmark(&smark); | ||
9817 | arglist.list = NULL; | 9819 | arglist.list = NULL; |
9818 | arglist.lastp = &arglist.list; | 9820 | arglist.lastp = &arglist.list; |
9819 | for (argp = n->nfor.args; argp; argp = argp->narg.next) { | 9821 | for (argp = n->nfor.args; argp; argp = argp->narg.next) { |
@@ -9830,7 +9832,6 @@ evalfor(union node *n, int flags) | |||
9830 | break; | 9832 | break; |
9831 | } | 9833 | } |
9832 | loopnest--; | 9834 | loopnest--; |
9833 | popstackmark(&smark); | ||
9834 | 9835 | ||
9835 | return status; | 9836 | return status; |
9836 | } | 9837 | } |
@@ -9841,14 +9842,12 @@ evalcase(union node *n, int flags) | |||
9841 | union node *cp; | 9842 | union node *cp; |
9842 | union node *patp; | 9843 | union node *patp; |
9843 | struct arglist arglist; | 9844 | struct arglist arglist; |
9844 | struct stackmark smark; | ||
9845 | int status = 0; | 9845 | int status = 0; |
9846 | 9846 | ||
9847 | errlinno = lineno = n->ncase.linno; | 9847 | errlinno = lineno = n->ncase.linno; |
9848 | if (funcline) | 9848 | if (funcline) |
9849 | lineno -= funcline - 1; | 9849 | lineno -= funcline - 1; |
9850 | 9850 | ||
9851 | setstackmark(&smark); | ||
9852 | arglist.list = NULL; | 9851 | arglist.list = NULL; |
9853 | arglist.lastp = &arglist.list; | 9852 | arglist.lastp = &arglist.list; |
9854 | expandarg(n->ncase.expr, &arglist, EXP_TILDE); | 9853 | expandarg(n->ncase.expr, &arglist, EXP_TILDE); |
@@ -9867,8 +9866,6 @@ evalcase(union node *n, int flags) | |||
9867 | } | 9866 | } |
9868 | } | 9867 | } |
9869 | out: | 9868 | out: |
9870 | popstackmark(&smark); | ||
9871 | |||
9872 | return status; | 9869 | return status; |
9873 | } | 9870 | } |
9874 | 9871 | ||
@@ -10590,7 +10587,6 @@ evalcommand(union node *cmd, int flags) | |||
10590 | struct localvar_list *localvar_stop; | 10587 | struct localvar_list *localvar_stop; |
10591 | struct parsefile *file_stop; | 10588 | struct parsefile *file_stop; |
10592 | struct redirtab *redir_stop; | 10589 | struct redirtab *redir_stop; |
10593 | struct stackmark smark; | ||
10594 | union node *argp; | 10590 | union node *argp; |
10595 | struct arglist arglist; | 10591 | struct arglist arglist; |
10596 | struct arglist varlist; | 10592 | struct arglist varlist; |
@@ -10615,7 +10611,6 @@ evalcommand(union node *cmd, int flags) | |||
10615 | 10611 | ||
10616 | /* First expand the arguments. */ | 10612 | /* First expand the arguments. */ |
10617 | TRACE(("evalcommand(0x%lx, %d) called\n", (long)cmd, flags)); | 10613 | TRACE(("evalcommand(0x%lx, %d) called\n", (long)cmd, flags)); |
10618 | setstackmark(&smark); | ||
10619 | localvar_stop = pushlocalvars(); | 10614 | localvar_stop = pushlocalvars(); |
10620 | file_stop = g_parsefile; | 10615 | file_stop = g_parsefile; |
10621 | back_exitstatus = 0; | 10616 | back_exitstatus = 0; |
@@ -10936,7 +10931,6 @@ evalcommand(union node *cmd, int flags) | |||
10936 | */ | 10931 | */ |
10937 | setvar0("_", lastarg); | 10932 | setvar0("_", lastarg); |
10938 | } | 10933 | } |
10939 | popstackmark(&smark); | ||
10940 | 10934 | ||
10941 | return status; | 10935 | return status; |
10942 | } | 10936 | } |