src__cmd__ksh93__sh__array.c.diff [plain text]
--- 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)