summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/builtin.c4
-rw-r--r--Src/init.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index e01e035cc..8dcdcc024 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5723,7 +5723,7 @@ int exit_val;
void
realexit(void)
{
- exit(exit_val ? exit_val : lastval);
+ exit((shell_exiting || exit_pending) ? exit_val : lastval);
}
/* As realexit(), but call _exit instead */
@@ -5732,7 +5732,7 @@ realexit(void)
void
_realexit(void)
{
- _exit(exit_val ? exit_val : lastval);
+ _exit((shell_exiting || exit_pending) ? exit_val : lastval);
}
/* exit the shell. val is the return value of the shell. *
diff --git a/Src/init.c b/Src/init.c
index 838c2c2d1..cec914329 100644
--- a/Src/init.c
+++ b/Src/init.c
@@ -1358,7 +1358,7 @@ init_misc(char *cmd, char *zsh_name)
bshin = fdopen(SHIN, "r");
execstring(cmd, 0, 1, "cmdarg");
stopmsg = 1;
- zexit(exit_val ? exit_val : lastval, 0);
+ zexit((exit_pending || shell_exiting) ? exit_val : lastval, 0);
}
if (interact && isset(RCS))