Blame SPECS/ksh-20120801-memlik.patch

Packit 992a25
diff -up ksh-20120801/src/cmd/ksh93/sh/array.c.memlik ksh-20120801/src/cmd/ksh93/sh/array.c
Packit 992a25
--- ksh-20120801/src/cmd/ksh93/sh/array.c.memlik	2012-06-07 00:00:42.000000000 +0200
Packit 992a25
+++ ksh-20120801/src/cmd/ksh93/sh/array.c	2013-06-11 16:52:47.557123973 +0200
Packit 992a25
@@ -1701,7 +1701,11 @@ void *nv_associative(register Namval_t *
Packit 992a25
 			ap->header.scope = 0;
Packit 992a25
 		}
Packit 992a25
 		else
Packit 992a25
-			dtclose(ap->header.table);
Packit 992a25
+ 		{
Packit 992a25
+ 			if((ap->header.nelem&ARRAY_MASK)==0 && (ap->cur=nv_search("0",ap->header.table,0)))
Packit 992a25
+ 				nv_associative(np,(char*)0,NV_ADELETE);
Packit 992a25
+ 			dtclose(ap->header.table);
Packit 992a25
+ 		}
Packit 992a25
 		return((void*)ap);
Packit 992a25
 	    case NV_ANEXT:
Packit 992a25
 		if(!ap->pos)
Packit 992a25
diff -up ksh-20120801/src/cmd/ksh93/sh/name.c.memlik ksh-20120801/src/cmd/ksh93/sh/name.c
Packit 992a25
--- ksh-20120801/src/cmd/ksh93/sh/name.c.memlik	2012-07-23 18:21:57.000000000 +0200
Packit 992a25
+++ ksh-20120801/src/cmd/ksh93/sh/name.c	2013-06-11 16:19:41.036648218 +0200
Packit 992a25
@@ -2465,6 +2465,8 @@ static void table_unset(Shell_t *shp, re
Packit 992a25
 			}
Packit 992a25
 		}
Packit 992a25
 		npnext = (Namval_t*)dtnext(root,np);
Packit 992a25
+               if(nv_arrayptr(np))
Packit 992a25
+                       nv_putsub(np,NIL(char*),ARRAY_SCAN);
Packit 992a25
 		_nv_unset(np,flags);
Packit 992a25
 		nv_delete(np,root,0);
Packit 992a25
 	}
Packit 992a25
@@ -3326,7 +3328,7 @@ int nv_rename(register Namval_t *np, int
Packit 992a25
 	shp->last_root = last_root;
Packit 992a25
 	if(flags&NV_MOVE)
Packit 992a25
 	{
Packit 992a25
-		if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)))
Packit 992a25
+		if(arraynp && !nv_isattr(np,NV_MINIMAL) && (mp=(Namval_t*)np->nvenv) && (ap=nv_arrayptr(mp)) && !ap->fun)
Packit 992a25
 			ap->nelem++;
Packit 992a25
 	}
Packit 992a25
 	if((nv_arrayptr(nr) && !arraynr) || nv_isvtree(nr))