make mksh -exc 'eval false || true'; echo $? echo 0 not 1
From Debian bug #269067
This commit is contained in:
		
							
								
								
									
										14
									
								
								funcs.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								funcs.c
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| /**	$MirOS: src/bin/mksh/funcs.c,v 1.6 2005/05/25 09:18:16 tg Exp $ */ | /**	$MirOS: src/bin/mksh/funcs.c,v 1.7 2005/05/25 09:39:49 tg Exp $ */ | ||||||
| /*	$OpenBSD: c_ksh.c,v 1.27 2005/03/30 17:16:37 deraadt Exp $	*/ | /*	$OpenBSD: c_ksh.c,v 1.27 2005/03/30 17:16:37 deraadt Exp $	*/ | ||||||
| /*	$OpenBSD: c_sh.c,v 1.29 2005/03/30 17:16:37 deraadt Exp $	*/ | /*	$OpenBSD: c_sh.c,v 1.29 2005/03/30 17:16:37 deraadt Exp $	*/ | ||||||
| /*	$OpenBSD: c_test.c,v 1.17 2005/03/30 17:16:37 deraadt Exp $	*/ | /*	$OpenBSD: c_test.c,v 1.17 2005/03/30 17:16:37 deraadt Exp $	*/ | ||||||
| @@ -13,7 +13,7 @@ | |||||||
| #include <ulimit.h> | #include <ulimit.h> | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| __RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.6 2005/05/25 09:18:16 tg Exp $"); | __RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.7 2005/05/25 09:39:49 tg Exp $"); | ||||||
|  |  | ||||||
| int | int | ||||||
| c_cd(char **wp) | c_cd(char **wp) | ||||||
| @@ -1792,7 +1792,8 @@ c_read(char **wp) | |||||||
| int | int | ||||||
| c_eval(char **wp) | c_eval(char **wp) | ||||||
| { | { | ||||||
| 	struct source *s; | 	struct source *s, *saves = source; | ||||||
|  | 	int savef, rv; | ||||||
|  |  | ||||||
| 	if (ksh_getopt(wp, &builtin_opt, null) == '?') | 	if (ksh_getopt(wp, &builtin_opt, null) == '?') | ||||||
| 		return 1; | 		return 1; | ||||||
| @@ -1826,7 +1827,12 @@ c_eval(char **wp) | |||||||
| 		exstat = subst_exstat; | 		exstat = subst_exstat; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	return shell(s, false); | 	savef = Flag(FERREXIT); | ||||||
|  | 	Flag(FERREXIT) = 0; | ||||||
|  | 	rv = shell(s, false); | ||||||
|  | 	Flag(FERREXIT) = savef; | ||||||
|  | 	source = saves; | ||||||
|  | 	return (rv); | ||||||
| } | } | ||||||
|  |  | ||||||
| int | int | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user