diff -rupN INIT.2011-02-08/src/cmd/ksh93/sh/subshell.c INIT.2011-02-08.clean/src/cmd/ksh93/sh/subshell.c
--- INIT.2011-02-08/src/cmd/ksh93/sh/subshell.c 2012-05-01 10:06:04.621554775 -0700
+++ INIT.2011-02-08.clean/src/cmd/ksh93/sh/subshell.c 2012-05-01 10:05:25.139965959 -0700
@@ -241,9 +241,6 @@ Namval_t *sh_assignok(register Namval_t
/* don't bother with this */
if(!sp->shpwd || np==SH_LEVELNOD || np==L_ARGNOD || np==SH_SUBSCRNOD || np==SH_NAMENOD)
return(np);
- /* don't bother to save if in newer scope */
- if(sp->var!=shp->var_tree && shp->last_root==shp->var_tree)
- return(np);
if((ap=nv_arrayptr(np)) && (mp=nv_opensub(np)))
{
shp->last_root = ap->table;