diff --git a/src/cmd/ksh93/bltins/cflow.c b/src/cmd/ksh93/bltins/cflow.c index fb2fccc6b..9396de789 100644 --- a/src/cmd/ksh93/bltins/cflow.c +++ b/src/cmd/ksh93/bltins/cflow.c @@ -70,7 +70,8 @@ done: /* return outside of function, dotscript and profile is exit */ if(shp->fn_depth==0 && shp->dot_depth==0 && !sh_isstate(SH_PROFILE)) pp->mode = SH_JMPEXIT; - sh_exit((shp->savexit = n) & SH_EXITMASK); + shp->savexit = n; + sh_exit((pp->mode == SH_JMPEXIT) ? (n & SH_EXITMASK) : n); return(1); }