]> git.draconx.ca Git - cdecl99.git/commitdiff
Make cdecl_free more robust by handling a NULL argument.
authorNick Bowler <nbowler@draconx.ca>
Thu, 23 Jun 2011 00:30:17 +0000 (20:30 -0400)
committerNick Bowler <nbowler@draconx.ca>
Thu, 23 Jun 2011 00:30:17 +0000 (20:30 -0400)
While we're at it, split the function into two so that the parser
doesn't have to call the exported version.

src/parse.y

index fdffa40939f561c806bac62e06776ae3ae66c02b..c003cc1e47aebf9586fe9379021c67324ea2026c 100644 (file)
@@ -82,18 +82,24 @@ static void free_declarator(struct cdecl_declarator *x)
        }
 }
 
-void cdecl_free(struct cdecl *decl)
+static void free_decl(struct cdecl *decl)
 {
        free_declspec(decl->specifiers);
        free_declarator(decl->declarators);
        free(decl);
 }
+
+void cdecl_free(struct cdecl *decl)
+{
+       if (decl)
+               free_decl(decl);
+}
 %}
 
 %destructor { free($$); }            <strval>
 %destructor { free_declspec($$); }   <declspec>
 %destructor { free_declarator($$); } <declarator>
-%destructor { cdecl_free($$); }      <decl>
+%destructor { free_decl($$); }       <decl>
 
 %token T_LEX_ERROR