0d285b4
--- ksh-20120801/src/cmd/ksh93/sh/main.c	2015-04-17 16:55:57.802048900 -0300
0d285b4
+++ ksh-20120801/src/cmd/ksh93/sh/main.c	2015-04-17 17:10:45.276129709 -0300
0d285b4
@@ -423,7 +423,7 @@ static void	exfile(register Shell_t *shp
0d285b4
 		sfsync(shp->outpool);
0d285b4
 		shp->st.execbrk = shp->st.breakcnt = 0;
0d285b4
 		/* check for return from profile or env file */
0d285b4
-		if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT))
0d285b4
+		if(sh_isstate(SH_PROFILE) && (jmpval==SH_JMPFUN || jmpval==SH_JMPEXIT || jmpval==SH_JMPERREXIT))
0d285b4
 		{
0d285b4
 			sh_setstate(states);
0d285b4
 			goto done;
0d285b4
@@ -600,6 +600,8 @@ done:
0d285b4
 		siglongjmp(*shp->jmplist,jmpval);
0d285b4
 	else if(jmpval == SH_JMPEXIT)
0d285b4
 		sh_done(shp,0);
0d285b4
+	else if(jmpval == SH_JMPERREXIT)
0d285b4
+		sh_done(shp,-1);
0d285b4
 	if(fno>0)
0d285b4
 		sh_close(fno);
0d285b4
 	if(shp->st.filename)