From 4a4a4f2681a61bfd45ec53e47d8eb2cc89ef0408 Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 28 Nov 2005 21:42:45 +0000 Subject: deeper copy in renumber --- src/cmd/acidtypes/type.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/cmd/acidtypes/type.c b/src/cmd/acidtypes/type.c index 69bf0157..b8dccb57 100644 --- a/src/cmd/acidtypes/type.c +++ b/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); } } -- cgit v1.2.3