diff -up ksh-20110208/src/cmd/ksh93/sh/subshell.c.clist ksh-20110208/src/cmd/ksh93/sh/subshell.c
--- ksh-20110208/src/cmd/ksh93/sh/subshell.c.clist 2010-11-03 21:01:11.000000000 +0100
+++ ksh-20110208/src/cmd/ksh93/sh/subshell.c 2011-03-02 15:52:14.339083830 +0100
@@ -242,7 +242,7 @@ Namval_t *sh_assignok(register Namval_t
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)
+ if(sp->var!=shp->var_tree && sp->var!=shp->var_base && shp->last_root==shp->var_tree)
return(np);
if((ap=nv_arrayptr(np)) && (mp=nv_opensub(np)))
{