* src/named-ref.c: Add a pointer check (named_ref_free).
* src/scan-code.l: New function (variant_table_free). Called in
code_scanner_free.
* src/symlist.c: Call to named_ref_free (symbol_list_free).
+2009-07-24 Alex Rozenman <rozenmam@gmail.com>
+
+ Fix some memory leaks.
+ * src/named-ref.c: Add a pointer check (named_ref_free).
+ * src/scan-code.l: New function (variant_table_free). Called in
+ code_scanner_free.
+ * src/symlist.c: Call to named_ref_free (symbol_list_free).
+
2009-07-24 Joel E. Denny <jdenny@ces.clemson.edu>
* src/lalr.c (state_lookahead_tokens_count): Correct comment.
void
named_ref_free (named_ref *r)
{
- free (r);
+ if (r)
+ free (r);
}
return &variant_table[variant_count - 1];
}
+static void
+variant_table_free ()
+{
+ if (variant_table)
+ free (variant_table);
+ variant_table = 0;
+ variant_table_size = variant_count = 0;
+}
+
static char *
find_prefix_end (const char *prefix, char *begin, char *end)
{
code_scanner_free (void)
{
obstack_free (&obstack_for_string, 0);
+ variant_table_free ();
+
/* Reclaim Flex's buffers. */
yylex_destroy ();
}
void
symbol_list_free (symbol_list *list)
{
- LIST_FREE (symbol_list, list);
+ symbol_list *node, *next;
+ for (node = list; node; node = next)
+ {
+ next = node->next;
+ if (node->named_ref)
+ named_ref_free (node->named_ref);
+ free (node);
+ }
}