(code_start): Initialize it to scanner_cursor,

not loc->end, since loc->end might contain garbage and this leads
to undefined behavior on some platforms.
(id_loc, token_start): Use (IF_LINTed) initial values that do not
depend on *loc, so that the reader doesn't give the the false
impression that *loc is initialized.
(<INITIAL>"%%"): Do not bother setting code_start, since its value
does not survive the return.
This commit is contained in:
Paul Eggert
2003-03-02 06:55:15 +00:00
parent 0433ba88f9
commit a2bc9dbc7b

View File

@@ -136,15 +136,16 @@ splice (\\[ \f\t\v]*\n)*
int token_type IF_LINT (= 0);
/* Location of most recent identifier, when applicable. */
location id_loc IF_LINT (= *loc);
location id_loc IF_LINT (= empty_location);
/* Where containing code started, when applicable.
Once the second %% seen, we are looking for the epilogue. */
boundary code_start = loc->end;
/* Where containing code started, when applicable. Its initial
value is relevant only when yylex is invoked in the SC_EPILOGUE
start condition. */
boundary code_start = scanner_cursor;
/* Where containing comment or string or character literal started,
when applicable. */
boundary token_start IF_LINT (= loc->start);
boundary token_start IF_LINT (= scanner_cursor);
%}
@@ -271,10 +272,7 @@ splice (\\[ \f\t\v]*\n)*
"%%" {
static int percent_percent_count;
if (++percent_percent_count == 2)
{
code_start = loc->start;
BEGIN SC_EPILOGUE;
}
BEGIN SC_EPILOGUE;
return PERCENT_PERCENT;
}