[Mesa-dev] [PATCH 1/2] glcpp: Don't enter lexer's NEWLINE_CATCHUP start state for single-line comments

Jordan Justen jljusten at gmail.com
Wed Jan 29 15:24:29 PST 2014


On Wed, Jan 29, 2014 at 2:20 PM, Carl Worth <cworth at cworth.org> wrote:
> In commit 6005e9cb28 a new start state of NEWLINE_CATCHUP was added to the
> lexer. This start state is used whenever the lexer is emitting a NEWLINE token
> to emit additional NEWLINE tokens for any newline characters that were skipped
> by an immediately preceding multi-line comment.
>
> However, that commit erroneously entered the NEWLINE_CATCHUP state for
> single-line comments. This is not desired since in the case of a single-line
> comment, the lexer is not emitting any NEWLINE token. The result is that the
> lexer will remain in the NEWLINE_CATCHUP state and proceed to fail to emit a
> NEWLINE token for the subsequent newline character, (since the case to match \n expects only the INITIAL start state).
>
> The fix is quite simple, remove the "BEGIN NEWLINE_CATCHUP" code from the
> single-line comment case, (preserving it only in exactly the cases where the
> lexer is actually emitting a NEWLINE token).
>
> My utmost tany hanks to Petri Latvala for reporting this bug and for providing

"tany hanks" => "thanks"

Series Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

> the minimal test case to exercise it. The bug showed up only with a multi-line
> comment which was followed immediately by a single-line comment (without any
> intervening newline), such as:
>
>         /*
>         */ // Kablam!
>
> Since 6005e9cb28, and before this commit, that very innocent-looking
> combination of comments would yield a parse failure in the compiler.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72686
> ---
>  src/glsl/glcpp/glcpp-lex.l | 2 --
>  1 file changed, 2 deletions(-)
>
> diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
> index f1fa192..ea3b862 100644
> --- a/src/glsl/glcpp/glcpp-lex.l
> +++ b/src/glsl/glcpp/glcpp-lex.l
> @@ -155,8 +155,6 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
>
>         /* Single-line comments */
>  "//"[^\n]* {
> -       if (parser->commented_newlines)
> -               BEGIN NEWLINE_CATCHUP;
>  }
>
>         /* Multi-line comments */
> --
> 1.8.5.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list