From 0de45ae5424c1c52b7f1a5d7592581ff56e188c9 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 18 Apr 2003 05:07:08 +0000 Subject: [PATCH] (set_conflicts): Resolve all conflicts, not just the first one. This change is from Paul Hilfinger, and it fixes regression reported by Werner Lemberg in . (resolve_sr_conflict): Don't invoke state_errs_set unless one or more tokens have been explicitly made errors. Otherwise, the above change causes Bison to abort. --- src/conflicts.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/conflicts.c b/src/conflicts.c index 21ea7ce5..fe1f6f9f 100644 --- a/src/conflicts.c +++ b/src/conflicts.c @@ -237,9 +237,12 @@ resolve_sr_conflict (state *s, int ruleno, symbol **errors) } } - /* Some tokens have been explicitly made errors. Allocate a - permanent errs structure for this state, to record them. */ - state_errs_set (s, nerrs, errors); + if (nerrs) + { + /* Some tokens have been explicitly made errors. Allocate a + permanent errs structure for this state, to record them. */ + state_errs_set (s, nerrs, errors); + } if (obstack_object_size (&solved_conflicts_obstack)) { @@ -277,10 +280,7 @@ set_conflicts (state *s, symbol **errors) for (i = 0; i < reds->num; ++i) if (reds->rules[i]->prec && reds->rules[i]->prec->prec && !bitset_disjoint_p (reds->lookaheads[i], lookaheadset)) - { - resolve_sr_conflict (s, i, errors); - break; - } + resolve_sr_conflict (s, i, errors); /* Loop over all rules which require lookahead in this state. Check for conflicts not resolved above. */ -- 2.47.2