[git commit] ash: [EVAL] Revert SKIPEVAL into EXEXIT

Denys Vlasenko vda.linux at googlemail.com
Sat Oct 1 13:27:44 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=0840c91909dd6a9a676ec105ef1ca5e8d36ce6e8
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Upstream commit:

    Date:   Tue Aug 11 20:56:53 2009 +1000
    [EVAL] Revert SKIPEVAL into EXEXIT

    Now that eval handles EV_TESTED correctly, we can remove the
    SKIPEVAL hack and simply use EXEXIT for set -e.

    Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c | 20 ++++++--------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index d107fa1..644ef6c 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8407,7 +8407,6 @@ defun(char *name, union node *func)
 #define SKIPBREAK      (1 << 0)
 #define SKIPCONT       (1 << 1)
 #define SKIPFUNC       (1 << 2)
-#define SKIPEVAL       (1 << 4)
 static smallint evalskip;       /* set to SKIPxxx if we are skipping commands */
 static int skipcount;           /* number of levels to skip */
 static int funcnest;            /* depth of function calls */
@@ -8612,13 +8611,10 @@ evaltree(union node *n, int flags)
 	/* Order of checks below is important:
 	 * signal handlers trigger before exit caused by "set -e".
 	 */
-	if (pending_sig && dotrap())
-		goto exexit;
-	if (checkexit & status)
-		evalskip |= SKIPEVAL;
-
-	if (flags & EV_EXIT) {
- exexit:
+	if ((pending_sig && dotrap())
+	 || (checkexit & status)
+	 || (flags & EV_EXIT)
+	) {
 		raise_exception(EXEXIT);
 	}
 
@@ -12360,7 +12356,7 @@ cmdloop(int top)
 
 		if (skip) {
 			evalskip &= ~SKIPFUNC;
-			return skip & SKIPEVAL;
+			break;
 		}
 	}
 	return status;
@@ -13263,14 +13259,10 @@ procargs(char **argv)
 static void
 read_profile(const char *name)
 {
-	int skip;
-
 	if (setinputfile(name, INPUT_PUSH_FILE | INPUT_NOFILE_OK) < 0)
 		return;
-	skip = cmdloop(0);
+	cmdloop(0);
 	popfile();
-	if (skip)
-		exitshell();
 }
 
 /*


More information about the busybox-cvs mailing list