From 68e0b8bdef058a401745fe03be191588e5903d78 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Wed, 22 Jun 2011 20:30:17 -0400 Subject: [PATCH] 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. --- src/parse.y | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 -- 2.43.2