diff --git a/ksh93-dttree-crash.dif b/ksh93-dttree-crash.dif index d84f228..df45b23 100644 --- a/ksh93-dttree-crash.dif +++ b/ksh93-dttree-crash.dif @@ -1,400 +1,53 @@ ---- src/cmd/ksh93/bltins/typeset.c -+++ src/cmd/ksh93/bltins/typeset.c 2013-10-25 13:20:42.799733785 +0000 -@@ -579,7 +579,7 @@ static int setall(char **argv,regist - np = sh_fsearch(shp,name,NV_ADD|HASH_NOSCOPE); - else - #endif /* SHOPT_NAMESPACE */ -- np = nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE); -+ np = nv_open(name,sh_subfuntree(shp,1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE); - } - else - { -@@ -1168,14 +1168,14 @@ static int unall(int argc, char **argv, - { - name = sh_optunalias; - if(shp->subshell) -- troot = sh_subaliastree(0); -+ troot = sh_subaliastree(shp,0); - } - else - name = sh_optunset; - while(r = optget(argv,name)) switch(r) - { - case 'f': -- troot = sh_subfuntree(1); -+ troot = sh_subfuntree(shp,1); - break; - case 'a': - all=1; ---- src/cmd/ksh93/include/defs.h -+++ src/cmd/ksh93/include/defs.h 2013-10-25 13:20:42.799733785 +0000 -@@ -423,10 +423,10 @@ extern void sh_printopts(Shopt_t,int,Sh - extern int sh_readline(Shell_t*,char**,volatile int,int,ssize_t,long); - extern Sfio_t *sh_sfeval(char*[]); - extern void sh_setmatch(Shell_t*,const char*,int,int,int[],int); --extern Dt_t *sh_subaliastree(int); -+extern Dt_t *sh_subaliastree(Shell_t*,int); - extern void sh_scope(Shell_t*, struct argnod*, int); - extern Namval_t *sh_scoped(Shell_t*, Namval_t*); --extern Dt_t *sh_subfuntree(int); -+extern Dt_t *sh_subfuntree(Shell_t*,int); - extern void sh_subjobcheck(pid_t); - extern int sh_subsavefd(int); - extern void sh_subtmpfile(Shell_t*); ---- src/cmd/ksh93/sh/arith.c -+++ src/cmd/ksh93/sh/arith.c 2013-10-25 13:20:42.799733785 +0000 -@@ -180,7 +180,10 @@ static Namval_t *scope(register Namval_t - { - ap = nv_arrayptr(np); - if(ap && !ap->table) -+ { - ap->table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->table,shp,1); -+ } - if(ap && ap->table && (nq=nv_search(nv_getsub(np),ap->table,NV_ADD))) - nq->nvenv = (char*)np; - if(nq && nv_isnull(nq)) ---- src/cmd/ksh93/sh/array.c -+++ src/cmd/ksh93/sh/array.c 2013-10-25 13:20:42.800733693 +0000 -@@ -79,6 +79,7 @@ struct assoc_array - - static Namarr_t *array_scope(Namval_t *np, Namarr_t *ap, int flags) - { -+ Shell_t *shp = sh_getinterp(); - Namarr_t *aq; - #if SHOPT_FIXEDARRAY - struct fixed_array *fp; -@@ -95,6 +96,7 @@ static Namarr_t *array_scope(Namval_t *n - if(is_associative(aq)) - { - aq->scope = (void*)dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(aq->scope,shp,1); - dtview((Dt_t*)aq->scope,aq->table); - aq->table = (Dt_t*)aq->scope; - return(aq); -@@ -271,6 +273,7 @@ int nv_arrayisset(Namval_t *np, Namarr_t - */ - static Namval_t *array_find(Namval_t *np,Namarr_t *arp, int flag) - { -+ Shell_t *shp=sh_getinterp(); - register struct index_array *ap = (struct index_array*)arp; - register union Value *up; - Namval_t *mp; -@@ -373,7 +376,10 @@ static Namval_t *array_find(Namval_t *np - { - char *cp; - if(!ap->header.table) -+ { - ap->header.table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->header.table,shp,1); -+ } - sfprintf(sh.strbuf,"%d",ap->cur); - cp = sfstruse(sh.strbuf); - mp = nv_search(cp, ap->header.table, NV_ADD); -@@ -402,6 +408,7 @@ static Namval_t *array_find(Namval_t *np - #if SHOPT_TYPEDEF - int nv_arraysettype(Namval_t *np, Namval_t *tp, const char *sub, int flags) - { -+ Shell_t *shp = sh_getinterp(); - Namval_t *nq; - char *av[2]; - int rdonly = nv_isattr(np,NV_RDONLY); -@@ -410,7 +417,10 @@ int nv_arraysettype(Namval_t *np, Namval - av[1] = 0; - sh.last_table = 0; - if(!ap->table) -+ { - ap->table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->table,shp,1); -+ } - if(nq = nv_search(sub, ap->table, NV_ADD)) - { - if(!nq->nvfun && nq->nvalue.cp && *nq->nvalue.cp==0) -@@ -485,6 +495,7 @@ static Namfun_t *array_clone(Namval_t *n - if(ap->table) - { - ap->table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->table,shp,1); - if(ap->scope && !(flags&NV_COMVAR)) - { - ap->scope = ap->table; -@@ -854,7 +865,9 @@ static struct index_array *array_grow(Na - np->nvalue.cp=0; - if(nv_hasdisc(np,&array_disc) || (nv_type(np) && nv_isvtree(np))) - { -+ Shell_t *shp = sh_getinterp(); - ap->header.table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->header.table,shp,1); - mp = nv_search("0", ap->header.table,NV_ADD); - if(mp && nv_isnull(mp)) - { -@@ -1169,6 +1182,7 @@ int nv_nextsub(Namval_t *np) - */ - Namval_t *nv_putsub(Namval_t *np,register char *sp,register long mode) - { -+ Shell_t *shp = sh_getinterp(); - register struct index_array *ap = (struct index_array*)nv_arrayptr(np); - register int size = (mode&ARRAY_MASK); - #if SHOPT_FIXEDARRAY -@@ -1180,7 +1194,6 @@ Namval_t *nv_putsub(Namval_t *np,registe - { - if(sp) - { -- Shell_t *shp = sh_getinterp(); - if(ap && ap->xp && !strmatch(sp,"+([0-9])")) - { - Namval_t *mp = nv_namptr(ap->xp,0); -@@ -1258,7 +1271,10 @@ Namval_t *nv_putsub(Namval_t *np,registe - char *cp; - Namval_t *mp; - if(!ap->header.table) -+ { - ap->header.table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->header.table,shp,1); -+ } - sfprintf(sh.strbuf,"%d",ap->cur); - cp = sfstruse(sh.strbuf); - mp = nv_search(cp, ap->header.table, NV_ADD); -@@ -1666,6 +1682,7 @@ int nv_aimax(register Namval_t* np) - */ - void *nv_associative(register Namval_t *np,const char *sp,int mode) - { -+ Shell_t *shp = sh_getinterp(); - register struct assoc_array *ap = (struct assoc_array*)nv_arrayptr(np); - register int type; - switch(mode) -@@ -1674,6 +1691,7 @@ void *nv_associative(register Namval_t * - if(ap = (struct assoc_array*)calloc(1,sizeof(struct assoc_array))) - { - ap->header.table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->header.table,shp,1); - ap->cur = 0; - ap->pos = 0; - ap->header.hdr.disc = &array_disc; -@@ -1742,7 +1760,6 @@ void *nv_associative(register Namval_t * - case NV_ANAME: - if(ap->cur) - { -- Shell_t *shp = sh_getinterp(); - if(!shp->instance && nv_isnull(ap->cur)) - return(NIL(void*)); - return((void*)ap->cur->nvname); ---- src/cmd/ksh93/sh/init.c -+++ src/cmd/ksh93/sh/init.c 2013-10-25 13:20:42.800733693 +0000 -@@ -1909,9 +1909,13 @@ static Init_t *nv_init(Shell_t *shp) - (OPTINDNOD)->nvalue.lp = (&shp->st.optindex); - /* set up the seconds clock */ - shp->alias_tree = inittree(shp,shtab_aliases); -+ dtuserdata(shp->alias_tree,shp,1); - shp->track_tree = dtopen(&_Nvdisc,Dtset); -+ dtuserdata(shp->track_tree,shp,1); - shp->bltin_tree = inittree(shp,(const struct shtable2*)shtab_builtins); -+ dtuserdata(shp->bltin_tree,shp,1); - shp->fun_tree = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(shp->fun_tree,shp,1); - dtview(shp->fun_tree,shp->bltin_tree); - nv_mount(DOTSHNOD, "type", shp->typedict=dtopen(&_Nvdisc,Dtoset)); - nv_adddisc(DOTSHNOD, shdiscnames, (Namval_t**)0); -@@ -1954,6 +1958,7 @@ static Dt_t *inittree(Shell_t *shp,const - nbltins = n; - } - base_treep = treep = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(treep,shp,1); - treep->user = (void*)shp; - for(tp=name_vals;*tp->sh_name;tp++,np++) - { ---- src/cmd/ksh93/sh/macro.c -+++ src/cmd/ksh93/sh/macro.c 2013-10-25 13:20:42.801733601 +0000 -@@ -2742,7 +2742,10 @@ static char *sh_tilde(Shell_t *shp,regis - skip: - #endif /* _WINIX */ - if(!logins_tree) -+ { - logins_tree = dtopen(&_Nvdisc,Dtbag); -+ dtuserdata(logins_tree,shp,1); -+ } - if(np=nv_search(string,logins_tree,NV_ADD)) - { - c = shp->subshell; ---- src/cmd/ksh93/sh/name.c -+++ src/cmd/ksh93/sh/name.c 2013-10-25 13:20:42.802733508 +0000 -@@ -821,6 +821,7 @@ Namval_t *nv_create(const char *name, D - { - Dt_t *dp = dtview(shp->var_tree,(Dt_t*)0); - rp->sdict = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(rp->sdict,shp,1); - dtview(rp->sdict,dp); - dtview(shp->var_tree,rp->sdict); - } -@@ -1170,7 +1171,10 @@ Namval_t *nv_create(const char *name, D - ap = nv_arrayptr(np); - } - if(n && ap && !ap->table) -+ { - ap->table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->table,shp,1); -+ } - if(ap && ap->table && (nq=nv_search(sub,ap->table,n))) - nq->nvenv = (char*)np; - if(nq && nv_isnull(nq)) -@@ -1391,7 +1395,7 @@ Namval_t *nv_open(const char *name, Dt_t - while((c= *(unsigned char*)cp++) && (c!='=') && (c!='/') && - (c>=0x200 || !(c=sh_lexstates[ST_NORM][c]) || c==S_EPAT || c==S_COLON)); - if(shp->subshell && c=='=') -- root = sh_subaliastree(1); -+ root = sh_subaliastree(shp,1); - if(c= *--cp) - *cp = 0; - np = nv_search(name, root, (flags&NV_NOADD)?0:NV_ADD); -@@ -2350,6 +2354,7 @@ void sh_scope(Shell_t *shp, struct argno - newroot = nv_dict(shp->namespace); - #endif /* SHOPT_NAMESPACE */ - newscope = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(newscope,shp,1); - if(envlist) - { - dtview(newscope,(Dt_t*)shp->var_tree); -@@ -3334,7 +3339,10 @@ int nv_rename(register Namval_t *np, int - if(ap=nv_arrayptr(np)) - { - if(!ap->table) -+ { - ap->table = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(ap->table,shp,1); -+ } - if(ap->table) - mp = nv_search(nv_getsub(np),ap->table,NV_ADD); - nv_arraychild(np,mp,0); ---- src/cmd/ksh93/sh/nvdisc.c -+++ src/cmd/ksh93/sh/nvdisc.c 2013-10-25 13:20:42.802733508 +0000 -@@ -246,6 +246,7 @@ static void chktfree(register Namval_t * - */ - static void assign(Namval_t *np,const char* val,int flags,Namfun_t *handle) - { -+ Shell_t *shp = sh_getinterp(); - int type = (flags&NV_APPEND)?APPEND:ASSIGN; - register struct vardisc *vp = (struct vardisc*)handle; - register Namval_t *nq = vp->disc[type]; -@@ -330,7 +331,7 @@ static void assign(Namval_t *np,const ch - } - else if(!nq || !isblocked(bp,type)) - { -- Dt_t *root = sh_subfuntree(1); -+ Dt_t *root = sh_subfuntree(shp,1); - int n; - Namarr_t *ap; - block(bp,type); -@@ -1296,6 +1297,7 @@ static Namfun_t *clone_table(Namval_t* n - Dt_t *oroot=tp->dict,*nroot=dtopen(&_Nvdisc,Dtoset); - if(!nroot) - return(0); -+ dtuserdata(nroot,dtuserdata(oroot,0,0),1); - memcpy((void*)ntp,(void*)fp,sizeof(struct table)); - ntp->dict = nroot; - ntp->parent = nv_lastdict(); -@@ -1493,6 +1495,6 @@ Namval_t *sh_fsearch(Shell_t *shp, const - sfputr(stkp,nv_name(shp->namespace),'.'); - sfputr(stkp,fname,0); - fname = stkptr(stkp,offset); -- return(nv_search(fname,sh_subfuntree(add&NV_ADD),add)); -+ return(nv_search(fname,sh_subfuntree(shp,add&NV_ADD),add)); - } - #endif /* SHOPT_NAMESPACE */ ---- src/cmd/ksh93/sh/path.c -+++ src/cmd/ksh93/sh/path.c 2013-10-25 13:20:42.803733416 +0000 -@@ -592,7 +592,7 @@ static void funload(Shell_t *shp,int fno - pname = path_fullname(shp,stakptr(PATH_OFFSET)); - if(shp->fpathdict && (rp = dtmatch(shp->fpathdict,(void*)pname))) - { -- Dt_t *funtree = sh_subfuntree(1); -+ Dt_t *funtree = sh_subfuntree(shp,1); - while(1) - { - rpfirst = dtprev(shp->fpathdict,rp); -@@ -868,13 +868,13 @@ Pathcomp_t *path_absolute(Shell_t *shp,r - if(isfun && f>=0 && (cp = strrchr(name,'.'))) - { - *cp = 0; -- if(nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE)) -+ if(nv_open(name,sh_subfuntree(shp,1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE)) - f = -1; - *cp = '.'; - } - if(isfun && f>=0) - { -- nv_onattr(nv_open(name,sh_subfuntree(1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE),NV_LTOU|NV_FUNCTION); -+ nv_onattr(nv_open(name,sh_subfuntree(shp,1),NV_NOARRAY|NV_IDENT|NV_NOSCOPE),NV_LTOU|NV_FUNCTION); - funload(shp,f,name); - close(f); - f = -1; ---- src/cmd/ksh93/sh/subshell.c -+++ src/cmd/ksh93/sh/subshell.c 2013-10-25 13:20:42.803733416 +0000 -@@ -379,7 +379,7 @@ static void nv_restore(struct subshell * - * return pointer to alias tree - * create new one if in a subshell and one doesn't exist and create is non-zero - */ --Dt_t *sh_subaliastree(int create) -+Dt_t *sh_subaliastree(Shell_t *shp,int create) - { - register struct subshell *sp = subshell_data; - if(!sp || sp->shp->curenv==0) -@@ -387,6 +387,7 @@ Dt_t *sh_subaliastree(int create) - if(!sp->salias && create) - { - sp->salias = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(sp->salias,shp,1); - dtview(sp->salias,sp->shp->alias_tree); - sp->shp->alias_tree = sp->salias; - } -@@ -397,7 +398,7 @@ Dt_t *sh_subaliastree(int create) - * return pointer to function tree - * create new one if in a subshell and one doesn't exist and create is non-zero - */ --Dt_t *sh_subfuntree(int create) -+Dt_t *sh_subfuntree(Shell_t *shp,int create) - { - register struct subshell *sp = subshell_data; - if(!sp || sp->shp->curenv==0) -@@ -405,6 +406,7 @@ Dt_t *sh_subfuntree(int create) - if(!sp->sfun && create) - { - sp->sfun = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(sp->sfun,shp,1); - dtview(sp->sfun,sp->shp->fun_tree); - sp->shp->fun_tree = sp->sfun; - } --- src/cmd/ksh93/sh/xec.c -+++ src/cmd/ksh93/sh/xec.c 2013-10-25 13:20:42.804733324 +0000 -@@ -2688,6 +2688,7 @@ int sh_exec(register const Shnode_t *t, - else ++++ src/cmd/ksh93/sh/xec.c 2013-02-01 16:22:50.000000000 +0000 +@@ -2741,11 +2741,6 @@ int sh_exec(register const Shnode_t *t, + slp = (struct slnod*)np->nvenv; + sh_funstaks(slp->slchild,-1); + stakdelete(slp->slptr); +- if(shp->funload) +- { +- free((void*)np->nvalue.rp); +- np->nvalue.rp = 0; +- } + if(rp->sdict) { - root = dtopen(&_Nvdisc,Dtoset); -+ dtuserdata(root,shp,1); - nv_mount(np, (char*)0, root); - np->nvalue.cp = Empty; - dtview(root,shp->var_base); -@@ -2729,7 +2730,7 @@ int sh_exec(register const Shnode_t *t, - np = sh_fsearch(shp,fname,NV_ADD|HASH_NOSCOPE); - if(!np) - #endif /* SHOPT_NAMESPACE */ -- np = nv_open(fname,sh_subfuntree(1),NV_NOASSIGN|NV_NOARRAY|NV_VARNAME|NV_NOSCOPE); -+ np = nv_open(fname,sh_subfuntree(shp,1),NV_NOASSIGN|NV_NOARRAY|NV_VARNAME|NV_NOSCOPE); - if(npv) + Namval_t *mp, *nq; +@@ -2759,6 +2754,12 @@ int sh_exec(register const Shnode_t *t, + dtclose(rp->sdict); + rp->sdict = 0; + } ++ if(shp->funload) ++ { ++ if(!shp->fpathdict) ++ free((void*)np->nvalue.rp); ++ np->nvalue.rp = 0; ++ } + } + if(!np->nvalue.rp) { - if(!shp->mktype) -@@ -2799,7 +2800,10 @@ int sh_exec(register const Shnode_t *t, +@@ -2769,7 +2770,7 @@ int sh_exec(register const Shnode_t *t, + { + static Dtdisc_t _Rpdisc = + { +- offsetof(struct Ufunction,fname), -1, sizeof(struct Ufunction) ++ offsetof(struct Ufunction,fname), -1, sizeof(struct Ufunction) + }; + struct functnod *fp; + struct comnod *ac = t->funct.functargs; +@@ -2796,8 +2797,10 @@ int sh_exec(register const Shnode_t *t, + rp->np = np; if(!shp->fpathdict) shp->fpathdict = dtopen(&_Rpdisc,Dtobag); - if(shp->fpathdict) -+ { -+ dtuserdata(shp->fpathdict,shp,1); +- if(shp->fpathdict) ++ if(shp->fpathdict) { ++ /* dtuserdata(shp->fpathdict,shp,1); */ dtinsert(shp->fpathdict,rp); + } } } else --- src/lib/libast/Mamfile -+++ src/lib/libast/Mamfile 2013-10-25 13:20:42.806733139 +0000 ++++ src/lib/libast/Mamfile 2013-01-30 10:01:13.000000000 +0000 @@ -3969,6 +3969,14 @@ meta dtopen.o %.c>%.o cdt/dtopen.c dtope prev cdt/dtopen.c exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -Icdt -Icomp -Iinclude -Istd -I${INSTALLROOT}/include/ast -D_PACKAGE_ast -c cdt/dtopen.c @@ -434,30 +87,8 @@ exec - ${AR} rc libast.a _sfputu.o clearerr.o fclose.o fdopen.o feof.o ferror.o fflush.o fgetc.o fgetpos.o fgets.o fileno.o fopen.o fprintf.o fpurge.o fputc.o fputs.o fread.o freopen.o fscanf.o fseek.o fseeko.o fsetpos.o ftell.o ftello.o fwrite.o flockfile.o ftrylockfile.o funlockfile.o getc.o getchar.o getw.o pclose.o popen.o printf.o putc.o putchar.o puts.o putw.o rewind.o scanf.o setbuf.o setbuffer.o setlinebuf.o setvbuf.o snprintf.o sprintf.o sscanf.o asprintf.o vasprintf.o tmpfile.o ungetc.o vfprintf.o vfscanf.o vprintf.o vscanf.o vsnprintf.o vsprintf.o vsscanf.o _doprnt.o _doscan.o _filbuf.o _flsbuf.o _stdfun.o _stdopen.o _stdprintf.o _stdscanf.o _stdsprnt.o _stdvbuf.o _stdvsnprnt.o _stdvsprnt.o _stdvsscn.o fgetwc.o fwprintf.o putwchar.o vfwscanf.o wprintf.o fgetws.o fwscanf.o swprintf.o vswprintf.o wscanf.o fputwc.o getwc.o swscanf.o vswscanf.o fputws.o getwchar.o ungetwc.o vwprintf.o fwide.o putwc.o vfwprintf.o vwscanf.o stdio_c99.o fcloseall.o fmemopen.o getdelim.o getline.o frexp.o frexpl.o astcopy.o exec - ${AR} rc libast.a astconf.o astdynamic.o astlicense.o astquery.o astwinsize.o conftab.o aststatic.o getopt.o getoptl.o aso.o asolock.o asometh.o asorelax.o aso-sem.o aso-fcntl.o vmbest.o vmclear.o vmclose.o vmdcheap.o vmdebug.o vmdisc.o vmexit.o vmlast.o vmopen.o vmpool.o vmprivate.o vmprofile.o vmregion.o vmsegment.o vmset.o vmstat.o vmstrdup.o vmtrace.o vmwalk.o vmmopen.o malloc.o vmgetmem.o a64l.o acosh.o asinh.o atanh.o cbrt.o crypt.o erf.o err.o exp.o exp__E.o expm1.o gamma.o getpass.o lgamma.o log.o log1p.o log__L.o rand48.o random.o rcmd.o rint.o support.o sfstrtmp.o spawn.o exec - (ranlib libast.a) >/dev/null 2>&1 || true ---- src/lib/libast/cdt/cdtlib.h -+++ src/lib/libast/cdt/cdtlib.h 2013-10-25 13:20:42.807733047 +0000 -@@ -58,9 +58,9 @@ - /* This struct holds private method data created on DT_OPEN */ - struct _dtdata_s - { unsigned int lock; /* general dictionary lock */ -- Dtuser_t user; /* application's data */ - unsigned int type; /* method type, control flags */ - ssize_t size; /* number of objects */ -+ Dtuser_t user; /* application's data */ - Dt_t dict; /* when DT_INDATA is requested */ - }; - -@@ -123,7 +123,7 @@ typedef struct _dtlib_s - #endif /* _BLD_cdt */ - - /* these macros lock/unlock dictionaries. DTRETURN substitutes for "return" */ --#define DTSETLOCK(dt) (((dt)->data->type&DT_SHARE) ? asolock(&(dt)->data->lock,1,ASO_SPINLOCK) : 0 ) -+#define DTSETLOCK(dt) (((dt)->data->type&DT_SHARE) ? asolock(&(dt)->data->lock,1,ASO_LOCK) : 0 ) - #define DTCLRLOCK(dt) (((dt)->data->type&DT_SHARE) ? asolock(&(dt)->data->lock,1,ASO_UNLOCK) : 0 ) - #define DTRETURN(ob,rv) do { (ob) = (rv); goto dt_return; } while(0) - #define DTERROR(dt, mesg) (!((dt)->disc && (dt)->disc->eventf) ? 0 : \ --- src/lib/libast/cdt/dtcomp.c -+++ src/lib/libast/cdt/dtcomp.c 2013-10-25 13:20:42.807733047 +0000 ++++ src/lib/libast/cdt/dtcomp.c 2012-12-20 10:29:45.000000000 +0000 @@ -52,9 +52,3 @@ extern ssize_t dtsize(Dt_t* d) { return (ssize_t)(*(_DT(d)->searchf))((d),(Void_t*)(0),DT_STAT); @@ -469,7 +100,7 @@ - return (ssize_t)(*(_DT(d)->searchf))((d),(Void_t*)(0),DT_STAT); -} --- src/lib/libast/cdt/dthash.c -+++ src/lib/libast/cdt/dthash.c 2013-10-25 13:20:42.807733047 +0000 ++++ src/lib/libast/cdt/dthash.c 2012-12-20 10:29:45.000000000 +0000 @@ -52,11 +52,13 @@ static int htable(Dt_t* dt) if((n = hash->tblz) > 0 && (hash->type&H_FIXED) ) return 0; /* fixed size table */ @@ -559,7 +190,7 @@ do_insert: /* inserting a new object */ --- src/lib/libast/cdt/dtlist.c -+++ src/lib/libast/cdt/dtlist.c 2013-10-25 13:20:42.807733047 +0000 ++++ src/lib/libast/cdt/dtlist.c 2012-12-20 10:29:45.000000000 +0000 @@ -142,9 +142,9 @@ int type; } @@ -603,7 +234,7 @@ if(type&(DT_DELETE|DT_DETACH|DT_REMOVE)) --- src/lib/libast/cdt/dtopen.c -+++ src/lib/libast/cdt/dtopen.c 2013-10-25 13:20:42.808732955 +0000 ++++ src/lib/libast/cdt/dtopen.c 2012-12-20 10:29:45.000000000 +0000 @@ -153,25 +153,3 @@ void _dtfree(Dt_t* dt, Dtlink_t* l, int if(disc->link < 0) /* free holder */ (void)(*dt->memoryf)(dt, (Void_t*)l, 0, disc); @@ -631,7 +262,7 @@ - } -} --- src/lib/libast/cdt/dtstat.c -+++ src/lib/libast/cdt/dtstat.c 2013-10-25 13:20:42.808732955 +0000 ++++ src/lib/libast/cdt/dtstat.c 2012-12-20 10:29:45.000000000 +0000 @@ -0,0 +1,54 @@ +/*********************************************************************** +* * @@ -688,7 +319,7 @@ + return sz; +} --- src/lib/libast/cdt/dtstrhash.c -+++ src/lib/libast/cdt/dtstrhash.c 2013-10-25 13:20:42.808732955 +0000 ++++ src/lib/libast/cdt/dtstrhash.c 2012-12-20 10:29:45.000000000 +0000 @@ -22,40 +22,38 @@ #include "dthdr.h" @@ -749,7 +380,7 @@ + return h; } --- src/lib/libast/cdt/dttree.c -+++ src/lib/libast/cdt/dttree.c 2013-10-25 13:20:42.808732955 +0000 ++++ src/lib/libast/cdt/dttree.c 2012-12-20 10:29:45.000000000 +0000 @@ -545,7 +545,14 @@ int type; } else goto no_root; @@ -818,7 +449,7 @@ if(!(root = _dtmake(dt, obj, type)) ) { obj = NIL(Void_t*); --- src/lib/libast/cdt/dtuser.c -+++ src/lib/libast/cdt/dtuser.c 2013-10-25 13:20:42.808732955 +0000 ++++ src/lib/libast/cdt/dtuser.c 2012-12-20 10:29:45.000000000 +0000 @@ -0,0 +1,59 @@ +/*********************************************************************** +* * @@ -880,7 +511,7 @@ + else return (*dt->disc->eventf)(dt, DT_ANNOUNCE|DT_USER|flags, data, dt->disc); +} --- src/lib/libast/include/cdt.h -+++ src/lib/libast/include/cdt.h 2013-10-25 13:20:42.809732863 +0000 ++++ src/lib/libast/include/cdt.h 2012-12-20 10:29:45.000000000 +0000 @@ -164,6 +164,7 @@ struct _dtstat_s ssize_t msize; /* max #defined elts in below arrays */ ssize_t lsize[DT_MAXSIZE]; /* #objects by level */