summaryrefslogtreecommitdiffstats
path: root/bin/sh/eval.c
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-09-22 07:24:31 -0300
committerRenato Botelho <renato@netgate.com>2015-09-22 07:24:31 -0300
commitb5a91a37da44408c68a25426a16a8ca84686f054 (patch)
tree5761589f6059a9c8a3df1d4aed7e7972e6b1c431 /bin/sh/eval.c
parent8400c0790e456038fbca4995d032d4e3d44c3d31 (diff)
parent0f328f755ef12f6cb68a753ed5e48e934002a2b8 (diff)
downloadFreeBSD-src-b5a91a37da44408c68a25426a16a8ca84686f054.zip
FreeBSD-src-b5a91a37da44408c68a25426a16a8ca84686f054.tar.gz
Merge branch 'stable/10' into devel
Diffstat (limited to 'bin/sh/eval.c')
-rw-r--r--bin/sh/eval.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/bin/sh/eval.c b/bin/sh/eval.c
index 055d1cc..c8ae089 100644
--- a/bin/sh/eval.c
+++ b/bin/sh/eval.c
@@ -316,9 +316,10 @@ evalloop(union node *n, int flags)
loopnest++;
status = 0;
for (;;) {
- evaltree(n->nbinary.ch1, EV_TESTED);
+ if (!evalskip)
+ evaltree(n->nbinary.ch1, EV_TESTED);
if (evalskip) {
-skipping: if (evalskip == SKIPCONT && --skipcount <= 0) {
+ if (evalskip == SKIPCONT && --skipcount <= 0) {
evalskip = 0;
continue;
}
@@ -337,8 +338,6 @@ skipping: if (evalskip == SKIPCONT && --skipcount <= 0) {
}
evaltree(n->nbinary.ch2, flags);
status = exitstatus;
- if (evalskip)
- goto skipping;
}
loopnest--;
exitstatus = status;
@@ -648,15 +647,15 @@ evalbackcmd(union node *n, struct backcmd *result)
struct jmploc *savehandler;
struct localvar *savelocalvars;
- setstackmark(&smark);
result->fd = -1;
result->buf = NULL;
result->nleft = 0;
result->jp = NULL;
if (n == NULL) {
exitstatus = 0;
- goto out;
+ return;
}
+ setstackmark(&smark);
exitstatus = oexitstatus;
if (is_valid_fast_cmdsubst(n)) {
savelocalvars = localvars;
@@ -698,7 +697,6 @@ evalbackcmd(union node *n, struct backcmd *result)
result->fd = pip[0];
result->jp = jp;
}
-out:
popstackmark(&smark);
TRACE(("evalbackcmd done: fd=%d buf=%p nleft=%d jp=%p\n",
result->fd, result->buf, result->nleft, result->jp));
OpenPOWER on IntegriCloud