ref: b823a0aa7aae86eb7bfb0594826600afa6bd5af4
parent: a29d7b1a00ac837ccaf8075cd1cf62303c042d10
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Jun 1 20:12:36 EDT 2016
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
--- a/sys/src/cmd/mk/fns.h
+++ b/sys/src/cmd/mk/fns.h
@@ -64,9 +64,7 @@
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);
--- a/sys/src/cmd/mk/symtab.c
+++ b/sys/src/cmd/mk/symtab.c
@@ -31,30 +31,6 @@
}
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;
@@ -63,21 +39,4 @@
for(ss = *s; ss; ss = ss->next)
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);
}
--
⑨