summaryrefslogtreecommitdiff
path: root/src/glsl/glcpp/glcpp-parse.y
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-07-19 18:02:12 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-07-20 17:01:11 -0700
commit61ebc01dfecda0963a184e881ea966e2d92f0519 (patch)
tree2202cfe0f99a92495d1b790b2af3af21152e6688 /src/glsl/glcpp/glcpp-parse.y
parentd4f239de6e988a59d4ba3783ea325aa1552c3f5a (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/glcpp/glcpp-parse.y')
-rw-r--r--src/glsl/glcpp/glcpp-parse.y5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index e5544fe29b..a2b54eff50 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);