X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/427c0dda0c9fb207d8abdd92e3f77f91af9b682d..87aabbff99bf8a90cb4fa2c495f40528337112af:/src/lalr.c diff --git a/src/lalr.c b/src/lalr.c index 2c0c942a..a549e5b4 100644 --- a/src/lalr.c +++ b/src/lalr.c @@ -87,9 +87,8 @@ set_goto_map (void) int i; for (i = sp->num - 1; i >= 0 && TRANSITION_IS_GOTO (sp, i); --i) { - if (ngotos == GOTO_NUMBER_MAX) - fatal (_("too many gotos (max %d)"), GOTO_NUMBER_MAX); - + if (ngotos >= GOTO_NUMBER_MAX) + abort (); ngotos++; goto_map[TRANSITION_SYMBOL (sp, i)]++; } @@ -146,8 +145,10 @@ map_goto (state_number_t state, symbol_number_t symbol) low = goto_map[symbol]; high = goto_map[symbol + 1] - 1; - while (low <= high) + for (;;) { + if (high < low) + abort (); middle = (low + high) / 2; s = from_state[middle]; if (s == state) @@ -157,10 +158,6 @@ map_goto (state_number_t state, symbol_number_t symbol) else high = middle - 1; } - - assert (0); - /* NOTREACHED */ - return 0; }