From aed466192a78ff2bb3db877a9599424de708cf90 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Tue, 20 Nov 2012 17:23:42 -0800 Subject: [PATCH] glcpp: Reject #version and #line not followed by whitespace Fixes part of es3conform's preprocess16_frag test. Reviewed-by: Carl Worth --- src/glsl/glcpp/glcpp-lex.l | 4 ++-- src/glsl/glcpp/tests/108-no-space-after-hash-version.c | 1 + src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected | 2 ++ src/glsl/glcpp/tests/109-no-space-after-hash-line.c | 1 + src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected | 2 ++ 5 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 src/glsl/glcpp/tests/108-no-space-after-hash-version.c create mode 100644 src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected create mode 100644 src/glsl/glcpp/tests/109-no-space-after-hash-line.c create mode 100644 src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l index 783c545495e..4f0dd34d30d 100644 --- a/src/glsl/glcpp/glcpp-lex.l +++ b/src/glsl/glcpp/glcpp-lex.l @@ -120,7 +120,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? return SPACE; } -{HASH}version { +{HASH}version{HSPACE}+ { yylval->str = ralloc_strdup (yyextra, yytext); yyextra->space_tokens = 0; return HASH_VERSION; @@ -135,7 +135,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? return OTHER; } -{HASH}line { +{HASH}line{HSPACE}+ { return HASH_LINE; } diff --git a/src/glsl/glcpp/tests/108-no-space-after-hash-version.c b/src/glsl/glcpp/tests/108-no-space-after-hash-version.c new file mode 100644 index 00000000000..0ce36f2eb1b --- /dev/null +++ b/src/glsl/glcpp/tests/108-no-space-after-hash-version.c @@ -0,0 +1 @@ +#version110 diff --git a/src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected b/src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected new file mode 100644 index 00000000000..da4544a55ca --- /dev/null +++ b/src/glsl/glcpp/tests/108-no-space-after-hash-version.c.expected @@ -0,0 +1,2 @@ +0:1(3): preprocessor error: Invalid tokens after # + diff --git a/src/glsl/glcpp/tests/109-no-space-after-hash-line.c b/src/glsl/glcpp/tests/109-no-space-after-hash-line.c new file mode 100644 index 00000000000..f52966a8e80 --- /dev/null +++ b/src/glsl/glcpp/tests/109-no-space-after-hash-line.c @@ -0,0 +1 @@ +#line2 diff --git a/src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected b/src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected new file mode 100644 index 00000000000..da4544a55ca --- /dev/null +++ b/src/glsl/glcpp/tests/109-no-space-after-hash-line.c.expected @@ -0,0 +1,2 @@ +0:1(3): preprocessor error: Invalid tokens after # + -- 2.11.0