commit 4a4a4f2681a61bfd45ec53e47d8eb2cc89ef0408 from: rsc date: Mon Nov 28 21:42:45 2005 UTC deeper copy in renumber commit - 6637b803f6d99fe3410483ad404ba6f042c13989 commit + 4a4a4f2681a61bfd45ec53e47d8eb2cc89ef0408 blob - 69bf0157e62afaf4df3da97da1c1d33b3dcd4097 blob + b8dccb57061561581f5fdbe523234e26b9227831 --- src/cmd/acidtypes/type.c +++ src/cmd/acidtypes/type.c @@ -319,6 +319,7 @@ denumber(void) void renumber(TypeList *tl, uint n1) { + int n; Type *t, *tt; for(; tl; tl=tl->tl){ @@ -326,6 +327,21 @@ renumber(TypeList *tl, uint n1) tt = typebynum(n1, t->n2); *tt = *t; tt->n1 = n1; + if(tt->n){ + n = (tt->n+31)&~31; + if(tt->tname){ + tt->tname = emalloc(n*sizeof tt->tname[0]); + memmove(tt->tname, t->tname, n*sizeof tt->tname[0]); + } + if(tt->val){ + tt->val = emalloc(n*sizeof tt->val[0]); + memmove(tt->val, t->val, n*sizeof tt->val[0]); + } + if(tt->t){ + tt->t = emalloc(n*sizeof tt->t[0]); + memmove(tt->t, t->t, n*sizeof tt->t[0]); + } + } addhash(tt); } }