From: Nick Bowler Date: Thu, 23 Jun 2011 00:30:17 +0000 (-0400) Subject: Make cdecl_free more robust by handling a NULL argument. X-Git-Tag: v1~174 X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/commitdiff_plain/68e0b8bdef058a401745fe03be191588e5903d78 Make cdecl_free more robust by handling a NULL argument. While we're at it, split the function into two so that the parser doesn't have to call the exported version. --- diff --git a/src/parse.y b/src/parse.y index fdffa40..c003cc1 100644 --- a/src/parse.y +++ b/src/parse.y @@ -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($$); } %destructor { free_declspec($$); } %destructor { free_declarator($$); } -%destructor { cdecl_free($$); } +%destructor { free_decl($$); } %token T_LEX_ERROR