diff -up ksh-20100621/src/cmd/ksh93/bltins/typeset.c.fixcrash ksh-20100621/src/cmd/ksh93/bltins/typeset.c --- ksh-20100621/src/cmd/ksh93/bltins/typeset.c.fixcrash 2010-06-04 16:54:56.000000000 +0200 +++ ksh-20100621/src/cmd/ksh93/bltins/typeset.c 2011-01-05 16:37:29.349014199 +0100 @@ -308,6 +308,7 @@ int b_typeset(int argc,register char case 'p': tdata.prefix = argv[0]; tdata.pflag = 1; + flag &= ~NV_ASSIGN; break; case 'r': flag |= NV_RDONLY; @@ -517,7 +518,7 @@ static int b_common(char **argv,regi path_alias(np,path_absolute(nv_name(np),NIL(Pathcomp_t*))); continue; } - np = nv_open(name,troot,nvflags|NV_ARRAY); + np = nv_open(name,troot,nvflags|((nvflags&NV_ASSIGN)?0:NV_ARRAY)); if(nv_isnull(np) && nv_isattr(np,NV_NOFREE)) nv_offattr(np,NV_NOFREE); if(tp->pflag)