From 7f0d7ae4f55a810d57ef07d5cd964435dd87e6dc Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Thu, 18 Jan 2007 01:12:57 +0000 Subject: [PATCH] fix subtle bug inherited from dash --- shell/ash.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/shell/ash.c b/shell/ash.c index 95928e9..8ef8c46 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -11938,7 +11938,11 @@ exitshell(void) TRACE(("pid %d, exitshell(%d)\n", getpid(), status)); if (setjmp(loc.loc)) { if (exception == EXEXIT) - _exit(exitstatus); +/* dash bug: it just does _exit(exitstatus) here + * but we have to do setjobctl(0) first! + * (bug is still not fixed in dash-0.5.3 - if you run dash + * under Midnight Commander, on exit MC is backgrounded) */ + status = exitstatus; goto out; } handler = &loc; @@ -11947,16 +11951,16 @@ exitshell(void) evalstring(p, 0); } flushall(); - setjobctl(0); #ifdef CONFIG_FEATURE_COMMAND_SAVEHISTORY if (iflag && rootshell) { const char *hp = lookupvar("HISTFILE"); - if(hp != NULL ) - save_history ( hp ); + if (hp != NULL) + save_history(hp); } #endif out: + setjobctl(0); _exit(status); /* NOTREACHED */ } -- 2.7.4