{
struct _mesa_symbol_table *table = calloc(1, sizeof(*table));
- table->ht = hash_table_ctor(32, hash_table_string_hash,
- hash_table_string_compare);
+ if (table != NULL) {
+ table->ht = hash_table_ctor(32, hash_table_string_hash,
+ hash_table_string_compare);
- _mesa_symbol_table_push_scope(table);
+ _mesa_symbol_table_push_scope(table);
+ }
return table;
}
+
+
+void
+_mesa_symbol_table_dtor(struct _mesa_symbol_table *table)
+{
+ while (table->current_scope != NULL) {
+ _mesa_symbol_table_pop_scope(table);
+ }
+
+ hash_table_dtor(table->ht);
+ free(table);
+}
extern struct _mesa_symbol_table *_mesa_symbol_table_ctor(void);
+extern void _mesa_symbol_table_dtor(struct _mesa_symbol_table *);
extern struct _mesa_symbol_table_iterator *_mesa_symbol_table_iterator_ctor(
struct _mesa_symbol_table *table, int name_space, const char *name);