Implement #undef.
authorCarl Worth <cworth@cworth.org>
Tue, 25 May 2010 22:28:58 +0000 (15:28 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 25 May 2010 22:28:58 +0000 (15:28 -0700)
Which is as simple as copying the former action back from the git
history.

Now all tests through test 11 pass.

glcpp-parse.y

index b3ef177a6dac3153dcd7267be6a101c8a8b51204..830a6232d80294295f9a6a5a495a545ef74d2e51 100644 (file)
@@ -171,7 +171,17 @@ control_line:
        }
 |      HASH_DEFINE_FUNC IDENTIFIER '(' ')' replacement_list NEWLINE
 |      HASH_DEFINE_FUNC IDENTIFIER '(' identifier_list ')' replacement_list NEWLINE
-|      HASH_UNDEF IDENTIFIER NEWLINE
+|      HASH_UNDEF IDENTIFIER NEWLINE {
+               string_list_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);
+                       talloc_free (macro);
+               }
+               talloc_free ($2);
+       }
 |      HASH NEWLINE
 ;