summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.c22
1 files changed, 5 insertions, 17 deletions
diff --git a/src/main.c b/src/main.c
index c686a13..6253010 100644
--- a/src/main.c
+++ b/src/main.c
@@ -123,30 +123,18 @@ main(int argc, char **argv)
 #endif
 	state = 0;
 	if (unlikely(setjmp(jmploc.loc))) {
-		int status;
 		int e;
 		int s;
 
 		reset();
-		s = state;
 
 		e = exception;
-		switch (exception) {
-		case EXERROR:
-			status = 2;
-			break;
-
-		case EXEXIT:
-		case EXEVAL:
-			s = 0;
-			/* fall through */
-		default:
-			status = exitstatus;
-			break;
-		}
-		exitstatus = status;
+		if (e == EXERROR)
+			exitstatus = 2;
 
-		if (s == 0 || iflag == 0 || shlvl)
+		s = state;
+		if (e == EXEXIT || e == EXEVAL ||
+		    s == 0 || iflag == 0 || shlvl)
 			exitshell();
 
 		if (e == EXINT