Make the lexer reentrant (to avoid "still reachable" memory).
This allows the final program to be 100% "valgrind clean", (freeing
all memory that it allocates). This will make it much easier to ensure
that any allocation that parser actions perform are also cleaned up.
diff --git a/glcpp.c b/glcpp.c
index 09641ce..90a0e89 100644
--- a/glcpp.c
+++ b/glcpp.c
@@ -24,5 +24,12 @@
int
main (void)
{
- return yyparse ();
+ int ret;
+ void *scanner;
+
+ yylex_init (&scanner);
+ ret = yyparse (scanner);
+ yylex_destroy (scanner);
+
+ return ret;
}