[Mesa-dev] [PATCH] compiler/glsl: invalidate float suffixes for glsl 1.10

Lars Hamre chemecse at gmail.com
Sat Mar 26 14:03:33 UTC 2016


Invalidates float suffixes for glsl 1.10

Fixes the following piglit tests:
tests/spec/glsl-1.10/compiler/literals/invalid-float-suffix-capital-f.vert
tests/spec/glsl-1.10/compiler/literals/invalid-float-suffix-f.vert`

Signed-off-by: Lars Hamre <chemecse at gmail.com>

---
 src/compiler/glsl/glsl_lexer.ll | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/compiler/glsl/glsl_lexer.ll b/src/compiler/glsl/glsl_lexer.ll
index 1f12265..dc71009 100644
--- a/src/compiler/glsl/glsl_lexer.ll
+++ b/src/compiler/glsl/glsl_lexer.ll
@@ -472,8 +472,17 @@ layout		{
 \.[0-9]+([eE][+-]?[0-9]+)?[fF]?		|
 [0-9]+\.([eE][+-]?[0-9]+)?[fF]?		|
 [0-9]+[eE][+-]?[0-9]+[fF]?		{
-			    yylval->real = _mesa_strtof(yytext, NULL);
-			    return FLOATCONSTANT;
+			    struct _mesa_glsl_parse_state *state = yyextra;
+			    char suffix = yytext[strlen(yytext) - 1];
+			    if (!state->is_version(120, 0) &&
+			        (suffix == 'f' || suffix == 'F')) {
+			        _mesa_glsl_error(yylloc, state,
+			                         "Float suffixes are invalid");
+			        return ERROR_TOK;
+			    } else {
+			        yylval->real = _mesa_strtof(yytext, NULL);
+			        return FLOATCONSTANT;
+			    }
 			}

 [0-9]+\.[0-9]+([eE][+-]?[0-9]+)?(lf|LF)	|
--
2.5.5



More information about the mesa-dev mailing list