tLong-standing bug in syminit, tickled by placing initshell before syminit. Don't understand why syminit exists at all. - 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 3300f9cd89202e417dee8f1799e88f955d75ac89 (DIR) parent 5ad21e86207dd42295733010dd448b51a614b611 (HTM) Author: rsc <devnull@localhost> Date: Sat, 15 Jan 2005 20:54:41 +0000 Long-standing bug in syminit, tickled by placing initshell before syminit. Don't understand why syminit exists at all. Diffstat: M src/cmd/mk/main.c | 2 +- M src/cmd/mk/symtab.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) --- (DIR) diff --git a/src/cmd/mk/main.c b/src/cmd/mk/main.c t@@ -39,7 +39,6 @@ main(int argc, char **argv) * instead of sharing them */ - initshell(); Binit(&bout, 1, OWRITE); buf = newbuf(); whatif = 0; t@@ -120,6 +119,7 @@ main(int argc, char **argv) iflag = 1; usage(); syminit(); + initshell(); initenv(); usage(); (DIR) diff --git a/src/cmd/mk/symtab.c b/src/cmd/mk/symtab.c t@@ -7,11 +7,13 @@ static Symtab *hash[NHASH]; void syminit(void) { - Symtab **s, *ss; + Symtab **s, *ss, *next; for(s = hash; s < &hash[NHASH]; s++){ - for(ss = *s; ss; ss = ss->next) + for(ss = *s; ss; ss = next){ + next = ss->next; free((char *)ss); + } *s = 0; } }