diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-06-02 00:12:36 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-06-02 00:12:36 +0200 |
commit | de19776b2f793de7fdf1111d84d96eb29f9a22fd (patch) | |
tree | a7ade9912c401eb379993b5e6c9aacd7f1a51fe1 /sys/src/cmd/mk/symtab.c | |
parent | b878450725de85dc874f42bc9de4ce1d5087f900 (diff) |
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
Diffstat (limited to 'sys/src/cmd/mk/symtab.c')
-rw-r--r-- | sys/src/cmd/mk/symtab.c | 41 |
1 files changed, 0 insertions, 41 deletions
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 @@ -31,30 +31,6 @@ symlook(char *sym, int space, void *install) } 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*)) { Symtab **s, *ss; @@ -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); -} |