From: Paul Eggert Date: Sun, 2 Mar 2003 06:55:15 +0000 (+0000) Subject: (code_start): Initialize it to scanner_cursor, X-Git-Tag: BISON-2_0~373 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/a2bc9dbc7b577c891811dd96f66a8e0daa66bf93?hp=0433ba88f97e23a896ffba2e4b33bac1d09ff345 (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. ("%%"): Do not bother setting code_start, since its value does not survive the return. --- diff --git a/src/scan-gram.l b/src/scan-gram.l index 424ae2e9..a31cd02e 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -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; }