mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
* src/lex.c (parse_percent_token): Be sure to 0-end token_buffer
before returning. Reported by Benoit Perrot.
This commit is contained in:
66
src/lex.c
66
src/lex.c
@@ -485,44 +485,40 @@ parse_percent_token (void)
|
||||
obstack_1grow (&token_obstack, '%');
|
||||
obstack_1grow (&token_obstack, c);
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case '%':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_two_percents;
|
||||
|
||||
case '{':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_percent_left_curly;
|
||||
|
||||
/* The following guys are here for backward compatibility with
|
||||
very ancient Yacc versions. The paper of Johnson mentions
|
||||
them (as ancient :). */
|
||||
case '<':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_left;
|
||||
|
||||
case '>':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_right;
|
||||
|
||||
case '2':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_nonassoc;
|
||||
|
||||
case '0':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_token;
|
||||
|
||||
case '=':
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_prec;
|
||||
}
|
||||
|
||||
if (!isalpha (c))
|
||||
{
|
||||
obstack_1grow (&token_obstack, '\0');
|
||||
token_buffer = obstack_finish (&token_obstack);
|
||||
return tok_illegal;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case '%':
|
||||
return tok_two_percents;
|
||||
|
||||
case '{':
|
||||
return tok_percent_left_curly;
|
||||
|
||||
/* The following guys are here for backward compatibility with
|
||||
very ancient Yacc versions. The paper of Johnson mentions
|
||||
them (as ancient :). */
|
||||
case '<':
|
||||
return tok_left;
|
||||
|
||||
case '>':
|
||||
return tok_right;
|
||||
|
||||
case '2':
|
||||
return tok_nonassoc;
|
||||
|
||||
case '0':
|
||||
return tok_token;
|
||||
|
||||
case '=':
|
||||
return tok_prec;
|
||||
|
||||
default:
|
||||
return tok_illegal;
|
||||
}
|
||||
}
|
||||
|
||||
while (c = getc (finput), isalpha (c) || c == '_' || c == '-')
|
||||
|
||||
Reference in New Issue
Block a user