--- ksh-20060214/src/cmd/ksh93/sh/fault.c.errtrap 2007-08-08 14:31:38.000000000 +0200 +++ ksh-20060214/src/cmd/ksh93/sh/fault.c 2007-08-08 14:33:15.000000000 +0200 @@ -346,7 +346,12 @@ int sav_trapnote = sh.trapnote; sh.trapnote &= ~SH_SIGSET; if(sh.st.trap[SH_ERRTRAP]) - sh_trap(sh.st.trap[SH_ERRTRAP],0); + { + trap = sh.st.trap[SH_ERRTRAP]; + sh.st.trap[SH_ERRTRAP] = 0; + sh_trap(trap,0); + sh.st.trap[SH_ERRTRAP] = trap; + } sh.trapnote = sav_trapnote; if(sh_isoption(SH_ERREXIT)) {