bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FYI: code_start is not initialized for epilogue


From: Paul Eggert
Subject: Re: FYI: code_start is not initialized for epilogue
Date: Sat, 1 Mar 2003 22:57:21 -0800 (PST)

Akim, thanks for spotting that bug.  I noticed a couple of minor
improvements on the patch, so I installed this further patch.

2003-03-01  Paul Eggert  <address@hidden>

        * src/scan-gram.l (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.

--- scan-gram.l.~1.56.~ 2003-03-01 02:55:31.000000000 -0800
+++ scan-gram.l 2003-03-01 22:43:48.048573000 -0800
@@ -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;
   }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]