From de19776b2f793de7fdf1111d84d96eb29f9a22fd Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 2 Jun 2016 00:12:36 +0200 Subject: mk: remove buggy and useless symtab functions (thanks qrstuv) neither symdel nor symstat were used anywhere. syminit was used but had no effect. both syminit and symdel dereference pointers after freeing them. symstat can be tricked into writing beyond the bounds of its array --- sys/src/cmd/mk/fns.h | 2 -- sys/src/cmd/mk/symtab.c | 41 ----------------------------------------- 2 files changed, 43 deletions(-) diff --git a/sys/src/cmd/mk/fns.h b/sys/src/cmd/mk/fns.h index ff43ba574..f16475042 100644 --- a/sys/src/cmd/mk/fns.h +++ b/sys/src/cmd/mk/fns.h @@ -64,9 +64,7 @@ char *shname(char*); void shprint(char*, Envy*, Bufblock*); Word *stow(char*); void subst(char*, char*, char*, int); -void symdel(char*, int); Symtab *symlook(char*, int, void*); -void symstat(void); void symtraverse(int, void(*)(Symtab*)); void timeinit(char*); long timeof(char*, int); diff --git a/sys/src/cmd/mk/symtab.c b/sys/src/cmd/mk/symtab.c index dc47f1669..0e2a64881 100644 --- a/sys/src/cmd/mk/symtab.c +++ b/sys/src/cmd/mk/symtab.c @@ -30,30 +30,6 @@ symlook(char *sym, int space, void *install) return(s); } -void -symdel(char *sym, int space) -{ - long h; - char *p; - Symtab *s, *ls; - - /* multiple memory leaks */ - - for(p = sym, h = space; *p; h += *p++) - h *= HASHMUL; - if(h < 0) - h = ~h; - h %= NHASH; - for(s = hash[h], ls = 0; s; ls = s, s = s->next) - if((s->space == space) && (strcmp(s->name, sym) == 0)){ - if(ls) - ls->next = s->next; - else - hash[h] = s->next; - free((char *)s); - } -} - void symtraverse(int space, void (*fn)(Symtab*)) { @@ -64,20 +40,3 @@ symtraverse(int space, void (*fn)(Symtab*)) if(ss->space == space) (*fn)(ss); } - -void -symstat(void) -{ - Symtab **s, *ss; - int n; - int l[1000]; - - memset((char *)l, 0, sizeof(l)); - for(s = hash; s < &hash[NHASH]; s++){ - for(ss = *s, n = 0; ss; ss = ss->next) - n++; - l[n]++; - } - for(n = 0; n < 1000; n++) - if(l[n]) Bprint(&bout, "%d of length %d\n", l[n], n); -} -- cgit v1.2.3