tdeeper copy in renumber - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4a4a4f2681a61bfd45ec53e47d8eb2cc89ef0408
 (DIR) parent 6637b803f6d99fe3410483ad404ba6f042c13989
 (HTM) Author: rsc <devnull@localhost>
       Date:   Mon, 28 Nov 2005 21:42:45 +0000
       
       deeper copy in renumber
       
       Diffstat:
         M src/cmd/acidtypes/type.c            |      16 ++++++++++++++++
       
       1 file changed, 16 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/src/cmd/acidtypes/type.c b/src/cmd/acidtypes/type.c
       t@@ -319,6 +319,7 @@ denumber(void)
        void
        renumber(TypeList *tl, uint n1)
        {
       +        int n;
                Type *t, *tt;
        
                for(; tl; tl=tl->tl){
       t@@ -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);
                }
        }