summaryrefslogtreecommitdiffstats
path: root/src/glsl/glcpp
diff options
context:
space:
mode:
authorCarl Worth <[email protected]>2014-06-25 11:52:02 -0700
committerCarl Worth <[email protected]>2014-07-29 15:11:49 -0700
commit0d5f5d127b2ccac29b12bc7377ccd8cd5b29c70b (patch)
tree9311326d8e3235bb5403db1d6a9b9cf4dd524db9 /src/glsl/glcpp
parent2fdc1f50c46b7f0a6abd8b2ef4739ac96958cb0a (diff)
glsl/glcpp: Don't use start-condition stack when switching to/from <DEFINE>
This commit does not cause any behavioral change for any valid program. Prior to entering the <DEFINE> start condition, the only valid start condition is <INITIAL>, so whether pushing/popping <DEFINE> onto the stack or explicit returning to <INITIAL> is equivalent. The reason for this change is that we are planning to soon add a start condition for <HASH> with the following semantics: <HASH>: We just saw a directive-introducing '#' <DEFINE>: We just saw "#define" starting a directive With these two start conditions in place, the only correct behavior is to leave <DEFINE> by returning to <INITIAL>. But the old push/pop code would have returned to the <HASH> start condition which would then cause an error when the next directive-introducing '#' would be encountered. Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/glsl/glcpp')
-rw-r--r--src/glsl/glcpp/glcpp-lex.l6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
index 798ff4c1a7b..f13b3dacb16 100644
--- a/src/glsl/glcpp/glcpp-lex.l
+++ b/src/glsl/glcpp/glcpp-lex.l
@@ -299,21 +299,21 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
*/
{HASH}define{HSPACE}+ {
if (! parser->skipping) {
+ BEGIN DEFINE;
yyextra->space_tokens = 0;
- yy_push_state(DEFINE, yyscanner);
RETURN_TOKEN (HASH_DEFINE);
}
}
/* An identifier immediately followed by '(' */
<DEFINE>{IDENTIFIER}/"(" {
- yy_pop_state(yyscanner);
+ BEGIN INITIAL;
RETURN_STRING_TOKEN (FUNC_IDENTIFIER);
}
/* An identifier not immediately followed by '(' */
<DEFINE>{IDENTIFIER} {
- yy_pop_state(yyscanner);
+ BEGIN INITIAL;
RETURN_STRING_TOKEN (OBJ_IDENTIFIER);
}