--- ./src/cmd/ksh93/include/defs.h.orig 2014-11-13 16:34:43.395195739 +0000 +++ ./src/cmd/ksh93/include/defs.h 2014-11-13 16:38:37.944297333 +0000 @@ -162,8 +162,8 @@ struct shared Namval_t *prev_table; /* previous table used in nv_open */ \ Sfio_t *outpool; /* ouput stream pool */ \ long timeout; /* read timeout */ \ - short curenv; /* current subshell number */ \ - short jobenv; /* subshell number for jobs */ \ + long curenv; /* current subshell number */ \ + long jobenv; /* subshell number for jobs */ \ int infd; /* input file descriptor */ \ short nextprompt; /* next prompt is PS */ \ short poolfiles; \ --- ./src/cmd/ksh93/include/jobs.h.orig 2014-11-13 16:35:10.331086826 +0000 +++ ./src/cmd/ksh93/include/jobs.h 2014-11-13 16:38:53.856235814 +0000 @@ -87,7 +87,7 @@ struct process unsigned short p_exit; /* exit value or signal number */ unsigned short p_exitmin; /* minimum exit value for xargs */ unsigned short p_flag; /* flags - see below */ - int p_env; /* subshell environment number */ + long p_env; /* subshell environment number */ #ifdef JOBS off_t p_name; /* history file offset for command */ struct termios p_stty; /* terminal state for job */ --- ./src/cmd/ksh93/sh/jobs.c.orig 2014-11-13 16:36:02.050894977 +0000 +++ ./src/cmd/ksh93/sh/jobs.c 2014-11-13 16:37:09.568636499 +0000 @@ -1815,7 +1815,7 @@ static struct process *job_unpost(regist register struct process *pw; /* make sure all processes are done */ #ifdef DEBUG - sfprintf(sfstderr,"ksh: job line %4d: drop pid=%d critical=%d pid=%d env=%d\n",__LINE__,getpid(),job.in_critical,pwtop->p_pid,pwtop->p_env); + sfprintf(sfstderr,"ksh: job line %4d: drop pid=%d critical=%d pid=%d env=%ld\n",__LINE__,getpid(),job.in_critical,pwtop->p_pid,pwtop->p_env); sfsync(sfstderr); #endif /* DEBUG */ pwtop = pw = job_byjid((int)pwtop->p_job); --- ./src/cmd/ksh93/sh/subshell.c.orig 2014-11-13 16:34:53.259157199 +0000 +++ ./src/cmd/ksh93/sh/subshell.c 2014-11-13 16:38:11.440395221 +0000 @@ -107,7 +107,7 @@ static struct subshell #endif /* SHOPT_COSHELL */ } *subshell_data; -static int subenv; +static long subenv; /* @@ -183,7 +183,8 @@ void sh_subfork(void) { register struct subshell *sp = subshell_data; Shell_t *shp = sp->shp; - int curenv = shp->curenv, comsub=shp->comsub; + long curenv = shp->curenv; + int comsub=shp->comsub; pid_t pid; char *trap = shp->st.trapcom[0]; if(trap) @@ -476,7 +477,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_ struct subshell sub_data; register struct subshell *sp = &sub_data; int jmpval,nsig=0,duped=0; - int savecurenv = shp->curenv; + long savecurenv = shp->curenv; int savejobpgid = job.curpgid; int *saveexitval = job.exitval; int16_t subshell;