Module Name:    src
Committed By:   christos
Date:           Mon Nov 14 18:24:45 UTC 2011

Modified Files:
        src/bin/sh: eval.c

Log Message:
PR/45613: Aleksey Cheusov: /bin/sh: 'set -e' + 'if eval false' problem
Fixed from: http://www.freebsd.org/cgi/query-pr.cgi?pr=134881&cat=


To generate a diff of this commit:
cvs rdiff -u -r1.102 -r1.103 src/bin/sh/eval.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/sh/eval.c
diff -u src/bin/sh/eval.c:1.102 src/bin/sh/eval.c:1.103
--- src/bin/sh/eval.c:1.102	Wed Aug 31 12:24:54 2011
+++ src/bin/sh/eval.c	Mon Nov 14 13:24:45 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: eval.c,v 1.102 2011/08/31 16:24:54 plunky Exp $	*/
+/*	$NetBSD: eval.c,v 1.103 2011/11/14 18:24:45 christos Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)eval.c	8.9 (Berkeley) 6/8/95";
 #else
-__RCSID("$NetBSD: eval.c,v 1.102 2011/08/31 16:24:54 plunky Exp $");
+__RCSID("$NetBSD: eval.c,v 1.103 2011/11/14 18:24:45 christos Exp $");
 #endif
 #endif /* not lint */
 
@@ -92,6 +92,7 @@ int evalskip;			/* set if we are skippin
 STATIC int skipcount;		/* number of levels to skip */
 MKINIT int loopnest;		/* current loop nesting level */
 int funcnest;			/* depth of function calls */
+STATIC int builtin_flags;	/* evalcommand flags for builtins */
 
 
 const char *commandname;
@@ -181,7 +182,7 @@ evalcmd(int argc, char **argv)
                         STPUTC('\0', concat);
                         p = grabstackstr(concat);
                 }
-                evalstring(p, 0);
+                evalstring(p, builtin_flags & EV_TESTED);
         }
         return exitstatus;
 }
@@ -1010,6 +1011,7 @@ normal_fork:
 			/* and getopt */
 			optreset = 1;
 			optind = 1;
+			builtin_flags = flags;
 			exitstatus = cmdentry.u.bltin(argc, argv);
 		} else {
 			e = exception;

Reply via email to