NOTE: someone with access will need to commit this patch after the
      review process

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`

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81585

Signed-off-by: Lars Hamre <cheme...@gmail.com>
Reviewed-by: Timothy Arceri <timothy.arc...@collabora.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..0980f4f 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 in 
GLSL 1.10");
+                               return ERROR_TOK;
+                           } else {
+                               yylval->real = _mesa_strtof(yytext, NULL);
+                               return FLOATCONSTANT;
+                           }
                        }

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

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to