From: Neil Booth Date: Thu, 17 Aug 2000 18:01:43 +0000 (+0000) Subject: cppinit.c (cpp_cleanup): Free include dir chains. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=709e9e509cdca723aec76fb1076b2feb1264192b;p=gcc.git cppinit.c (cpp_cleanup): Free include dir chains. * cppinit.c (cpp_cleanup): Free include dir chains. * cpplib.c (do_undef): Let _cpp_free_definition make the node void. (do_unassert): Free the assert with _cpp_free_definition. * cppmacro.c (_cpp_free_definition): Free memory allocated for assertions. Make the node a T_VOID node. From-SVN: r35765 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 072c5acbea4..9b8739b6fc5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2000-08-17 Neil Booth + + * cppinit.c (cpp_cleanup): Free include dir chains. + * cpplib.c (do_undef): Let _cpp_free_definition make the node void. + (do_unassert): Free the assert with _cpp_free_definition. + * cppmacro.c (_cpp_free_definition): Free memory allocated for + assertions. Make the node a T_VOID node. + 2000-08-17 Neil Booth * cppinit.c (path_include, append_include_chain): diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 0cb90aba009..e91f1bea4c5 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -467,6 +467,8 @@ void cpp_cleanup (pfile) cpp_reader *pfile; { + struct file_name_list *dir, *next; + while (CPP_BUFFER (pfile) != NULL) cpp_pop_buffer (pfile); @@ -480,6 +482,13 @@ cpp_cleanup (pfile) _cpp_cleanup_includes (pfile); _cpp_cleanup_stacks (pfile); _cpp_cleanup_macros (pfile); + + for (dir = CPP_OPTION (pfile, quote_include); dir; dir = next) + { + next = dir->next; + free (dir->name); + free (dir); + } } diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 9daee3e8fb6..bc50452b561 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -298,7 +298,6 @@ do_undef (pfile) cpp_warning (pfile, "undefining \"%s\"", node->name); _cpp_free_definition (node); - node->type = T_VOID; } } @@ -1369,14 +1368,7 @@ do_unassert (pfile) node->type = T_VOID; } else - { - for (temp = node->value.answers; temp; temp = next) - { - next = temp->next; - FREE_ANSWER (temp); - } - node->type = T_VOID; - } + _cpp_free_definition (node); } if (answer) diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c index ade67d70c31..3c9ffb97483 100644 --- a/gcc/cppmacro.c +++ b/gcc/cppmacro.c @@ -404,6 +404,18 @@ _cpp_free_definition (h) { if (h->type == T_MACRO) free ((PTR) h->value.expansion); + else if (h->type == T_ASSERTION) + { + struct answer *temp, *next; + + for (temp = h->value.answers; temp; temp = next) + { + next = temp->next; + FREE_ANSWER (temp); + } + } + + h->type = T_VOID; h->value.expansion = NULL; }