From a58f64f5c2bbd1ebd8a22251f91c7835b2010f4b Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Fri, 19 May 2000 16:18:43 +0000 Subject: [PATCH] cpplex.c (_cpp_scan_until): Clear AUX field of tokens. * cpplex.c (_cpp_scan_until): Clear AUX field of tokens. * cpplib.c (do_unassert): Put the list to compare against on the stack. From-SVN: r34025 --- gcc/ChangeLog | 6 ++++++ gcc/cpplex.c | 1 + gcc/cpplib.c | 20 +++++++++----------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 74becdcdba0..87308c1aba3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-05-19 Zack Weinberg + + * cpplex.c (_cpp_scan_until): Clear AUX field of tokens. + * cpplib.c (do_unassert): Put the list to compare against on + the stack. + 2000-05-19 Bruce Korb * fixinc/README: cleaned up old documentation diff --git a/gcc/cpplex.c b/gcc/cpplex.c index 117f61039f3..b75db74d473 100644 --- a/gcc/cpplex.c +++ b/gcc/cpplex.c @@ -790,6 +790,7 @@ _cpp_scan_until (pfile, list, stop) list->tokens_used++; TOK_TYPE (list, i) = type; TOK_COL (list, i) = col; + TOK_AUX (list, i) = 0; TOK_FLAGS (list, i) = space_before ? PREV_WHITESPACE : 0; TOK_LEN (list, i) = len; diff --git a/gcc/cpplib.c b/gcc/cpplib.c index 23b522c2b95..16793060dbe 100644 --- a/gcc/cpplib.c +++ b/gcc/cpplib.c @@ -1607,8 +1607,9 @@ do_unassert (pfile) U_CHAR *sym; size_t len; HASHNODE *hp; - struct predicate *pred = 0; + cpp_toklist ans; enum cpp_ttype type; + int specific = 0; old_written = CPP_WRITTEN (pfile); pfile->no_macro_expand++; @@ -1624,10 +1625,10 @@ do_unassert (pfile) type = _cpp_get_directive_token (pfile); if (type == CPP_OPEN_PAREN) { - pred = (struct predicate *) xmalloc (sizeof (struct predicate)); - _cpp_init_toklist (&pred->answer); + specific = 1; + _cpp_init_toklist (&ans); - if (_cpp_scan_until (pfile, &pred->answer, CPP_CLOSE_PAREN) + if (_cpp_scan_until (pfile, &ans, CPP_CLOSE_PAREN) != CPP_CLOSE_PAREN) ERROR ("missing close paren in #unassert"); @@ -1645,13 +1646,13 @@ do_unassert (pfile) goto error to clean up. */ goto error; - if (pred) + if (specific) { /* Find this specific answer and remove it. */ struct predicate *o, *p; for (p = NULL, o = hp->value.pred; o; p = o, o = o->next) - if (_cpp_equiv_toklists (&pred->answer, &o->answer)) + if (_cpp_equiv_toklists (&ans, &o->answer)) { if (p) p->next = o->next; @@ -1682,11 +1683,8 @@ do_unassert (pfile) _cpp_skip_rest_of_line (pfile); pfile->no_macro_expand--; CPP_SET_WRITTEN (pfile, old_written); - if (pred) - { - _cpp_free_toklist (&pred->answer); - free (pred); - } + if (specific) + _cpp_free_toklist (&ans); return 0; }