[Mesa-dev] [PATCH] glsl parser: Select typelist as early as possible.

Olivier Galibert galibert at pobox.com
Fri Apr 20 00:20:57 PDT 2012


Guys, it's a bugfix, it's five lines changed, and it's falling through
the cracks...  Can someone have a look?

  OG.

On Wed, Apr 11, 2012 at 10:56:51AM +0200, Olivier Galibert wrote:
> Type selection must be extended w.r.t version and extension lines as
> soon as it is possible, and in any case before the lookahead is done
> to check the nature of the next line.  Otherwise code such as:
> 
>   #version 400
> 
>   dmat2 function inverse(dmat2 m) { ... }
> 
> fails because "dmat2" has already been lexed as a NEW_IDENTIFIER
> before _mesa_glsl_initialize_types is called.
> 
> Signed-off-by: Olivier Galibert <galibert at pobox.com>
> ---
>  src/glsl/glsl_parser.yy |    5 ++---
>  1 files changed, 2 insertions(+), 3 deletions(-)
> 
> [Sorry, resent with the correct subject...]
> 
> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
> index 64506b6..9a0af95 100644
> --- a/src/glsl/glsl_parser.yy
> +++ b/src/glsl/glsl_parser.yy
> @@ -233,9 +233,6 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg)
>  
>  translation_unit: 
>  	version_statement extension_statement_list
> -	{
> -	   _mesa_glsl_initialize_types(state);
> -	}
>  	external_declaration_list
>  	{
>  	   delete state->symbols;
> @@ -285,6 +282,7 @@ version_statement:
>  			       state->version_string,
>  			       state->supported_version_string);
>  	   }
> +	   _mesa_glsl_initialize_types(state);
>  	}
>  	;
>  
> @@ -322,6 +320,7 @@ extension_statement:
>  	   if (!_mesa_glsl_process_extension($2, & @2, $4, & @4, state)) {
>  	      YYERROR;
>  	   }
> +	   _mesa_glsl_initialize_types(state);
>  	}
>  	;
>  
> -- 
> 1.7.4
> 
> _______________________________________________
> 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