--- src/cmd/ksh93/sh/array.c~ 2012-06-06 15:00:42.000000000 -0700 +++ src/cmd/ksh93/sh/array.c 2014-02-08 18:25:11.000000000 -0800 @@ -682,8 +682,10 @@ static void array_putval(Namval_t *np, c { if(is_associative(ap)) (*ap->fun)(np, NIL(char*), NV_AFREE); - else if(ap->table) + else if(ap->table) { dtclose(ap->table); + ap->table = 0; + } nv_offattr(np,NV_ARRAY); } if(!mp || mp!=np || is_associative(ap)) @@ -1700,8 +1702,10 @@ void *nv_associative(register Namval_t * dtclose(ap->header.scope); ap->header.scope = 0; } - else + else { dtclose(ap->header.table); + ap->header.table = 0; + } return((void*)ap); case NV_ANEXT: if(!ap->pos)