glcpp: Fix use-after-free error from #undef directive.

By taking advantage of the recently-added hash_table_remove function.

With this change, all existing tests are now valgrind-clean.
This commit is contained in:
Carl Worth
2010-07-19 18:02:12 -07:00
committed by Ian Romanick
parent d4f239de6e
commit 61ebc01dfe

View File

@@ -202,10 +202,7 @@ control_line:
| HASH_UNDEF IDENTIFIER NEWLINE {
macro_t *macro = hash_table_find (parser->defines, $2);
if (macro) {
/* XXX: Need hash table to support a real way
* to remove an element rather than prefixing
* a new node with data of NULL like this. */
hash_table_insert (parser->defines, NULL, $2);
hash_table_remove (parser->defines, $2);
talloc_free (macro);
}
talloc_free ($2);