diff options
author | Carl Worth <[email protected]> | 2010-07-19 18:02:12 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2010-07-20 17:01:11 -0700 |
commit | 61ebc01dfecda0963a184e881ea966e2d92f0519 (patch) | |
tree | 2202cfe0f99a92495d1b790b2af3af21152e6688 /src/glsl | |
parent | d4f239de6e988a59d4ba3783ea325aa1552c3f5a (diff) |
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.
Diffstat (limited to 'src/glsl')
-rw-r--r-- | src/glsl/glcpp/glcpp-parse.y | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index e5544fe29b8..a2b54eff507 100644 --- a/src/glsl/glcpp/glcpp-parse.y +++ b/src/glsl/glcpp/glcpp-parse.y @@ -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); |