aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorJilles Tjoelker <jilles@FreeBSD.org>2009-12-30 21:46:33 +0000
committerJilles Tjoelker <jilles@FreeBSD.org>2009-12-30 21:46:33 +0000
commit92004afed05c23e12af70a232922fabb1e47fde6 (patch)
tree505629f5123d8b8368522b1237fc949fd103095f /bin
parentc7ab66020fb183062ded58a617a6b4979fdd9e63 (diff)
Notes
Diffstat (limited to 'bin')
-rw-r--r--bin/sh/eval.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/bin/sh/eval.c b/bin/sh/eval.c
index 7875f822e58b..d5fb5ae6c58e 100644
--- a/bin/sh/eval.c
+++ b/bin/sh/eval.c
@@ -792,20 +792,20 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd)
unreffunc(cmdentry.u.func);
poplocalvars();
localvars = savelocalvars;
+ funcnest--;
handler = savehandler;
longjmp(handler->loc, 1);
}
handler = &jmploc;
+ funcnest++;
INTON;
for (sp = varlist.list ; sp ; sp = sp->next)
mklocal(sp->text);
- funcnest++;
exitstatus = oexitstatus;
if (flags & EV_TESTED)
evaltree(getfuncnode(cmdentry.u.func), EV_TESTED);
else
evaltree(getfuncnode(cmdentry.u.func), 0);
- funcnest--;
INTOFF;
unreffunc(cmdentry.u.func);
poplocalvars();
@@ -813,6 +813,7 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd)
freeparam(&shellparam);
shellparam = saveparam;
handler = savehandler;
+ funcnest--;
popredir();
INTON;
if (evalskip == SKIPFUNC) {