diff -up ksh-20100621/src/cmd/ksh93/sh/subshell.c.mleakfix2 ksh-20100621/src/cmd/ksh93/sh/subshell.c --- ksh-20100621/src/cmd/ksh93/sh/subshell.c.mleakfix2 2013-07-16 16:07:00.171814602 +0200 +++ ksh-20100621/src/cmd/ksh93/sh/subshell.c 2013-07-16 16:08:53.463721640 +0200 @@ -198,7 +198,13 @@ void sh_subfork(void) shp->comsub = 0; SH_SUBSHELLNOD->nvalue.s = 0; sp->subpid=0; - shp->st.trapcom[0] = (comsub==2?NULL:trap); + if (comsub==2) + { + + shp->st.trapcom[0] = NULL; + free((void*)trap); + } + else shp->st.trapcom[0] = trap; shp->savesig = 0; } }