mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 14:40:10 +01:00
ARB prog parser: Don't leak symbol table header structures
This commit is contained in:
parent
2643a7ba29
commit
0f255d1956
1 changed files with 16 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue