diff --git a/src/cmd/ksh93/sh/main.c b/src/cmd/ksh93/sh/main.c index 47bd007cc..bc339ab7c 100644 --- a/src/cmd/ksh93/sh/main.c +++ b/src/cmd/ksh93/sh/main.c @@ -418,7 +418,7 @@ static void exfile(register Shell_t *shp, register Sfio_t *iop,register int fno) sfsync(shp->outpool); shp->st.execbrk = shp->st.breakcnt = 0; /* check for return from profile or env file */ - if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT)) + if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT || jmpval==SH_JMPERREXIT)) { sh_setstate(states); goto done; @@ -594,7 +594,7 @@ done: } if(jmpval == SH_JMPSCRIPT) siglongjmp(*shp->jmplist,jmpval); - else if(jmpval == SH_JMPEXIT) + else if(jmpval == SH_JMPEXIT || jmpval == SH_JMPERREXIT) sh_done(shp,0); if(fno>0) sh_close(fno);