ARB prog parser: Don't leak symbol table header structures

This commit is contained in:
Ian Romanick 2009-10-27 11:44:56 -07:00
parent 2643a7ba29
commit 0f255d1956

View file

@ -73,6 +73,9 @@ struct symbol {
/**
*/
struct symbol_header {
/** Linkage in list of all headers in a given symbol table. */
struct symbol_header *next;
/** Symbol name. */
const char *name;
@ -102,6 +105,9 @@ struct _mesa_symbol_table {
/** Top of scope stack. */
struct scope_level *current_scope;
/** List of all symbol headers in the table. */
struct symbol_header *hdr;
};
@ -301,6 +307,8 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table,
hdr->name = name;
hash_table_insert(table->ht, hdr, name);
hdr->next = table->hdr;
table->hdr = hdr;
}
check_symbol_table(table);
@ -341,10 +349,18 @@ _mesa_symbol_table_ctor(void)
void
_mesa_symbol_table_dtor(struct _mesa_symbol_table *table)
{
struct symbol_header *hdr;
struct symbol_header *next;
while (table->current_scope != NULL) {
_mesa_symbol_table_pop_scope(table);
}
for (hdr = table->hdr; hdr != NULL; hdr = next) {
next = hdr->next;
_mesa_free(hdr);
}
hash_table_dtor(table->ht);
free(table);
}