free_section bugfix

This commit is contained in:
grischka
2008-05-11 00:11:52 +02:00
parent f9bf48d643
commit 1300cec38c

4
tcc.c
View File

@ -1284,9 +1284,9 @@ Section *new_section(TCCState *s1, const char *name, int sh_type, int sh_flags)
static void free_section(Section *s) static void free_section(Section *s)
{ {
if (s->link && 0 == s->link->sh_num) if (s->link && (s->link->sh_flags & SHF_PRIVATE))
free_section(s->link); free_section(s->link);
if (s->hash && 0 == s->hash->sh_num) if (s->hash && (s->link->sh_flags & SHF_PRIVATE))
s->hash->link = NULL, free_section(s->hash); s->hash->link = NULL, free_section(s->hash);
tcc_free(s->data); tcc_free(s->data);
tcc_free(s); tcc_free(s);