summaryrefslogtreecommitdiff
path: root/src/glsl
diff options
context:
space:
mode:
authorMichal Krol <michal@vmware.com>2009-09-04 11:39:30 +0200
committerMichal Krol <michal@vmware.com>2009-09-07 10:12:03 +0200
commitddd8ae7fbc643892b08ddf66c67bca36d42b53a6 (patch)
tree888fee1d5cd79d517d3352288bd0f9a40d8beebb /src/glsl
parent7f187583c14448047c95d933a96b190273a881e5 (diff)
glsl: Output endof token after processing a directive.
Some directives may output tokens as a result of their operation.
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/pp/sl_pp_process.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/glsl/pp/sl_pp_process.c b/src/glsl/pp/sl_pp_process.c
index be01f9139c1..18289790d19 100644
--- a/src/glsl/pp/sl_pp_process.c
+++ b/src/glsl/pp/sl_pp_process.c
@@ -87,6 +87,7 @@ sl_pp_process(struct sl_pp_context *context,
int found_eol = 0;
unsigned int first;
unsigned int last;
+ struct sl_pp_token_info endof;
/* Directive name. */
name = sl_pp_context_cstr(context, input[i].data.identifier);
@@ -99,17 +100,13 @@ sl_pp_process(struct sl_pp_context *context,
switch (input[i].token) {
case SL_PP_NEWLINE:
/* Preserve newline just for the sake of line numbering. */
- if (sl_pp_process_out(&state, &input[i])) {
- return -1;
- }
+ endof = input[i];
i++;
found_eol = 1;
break;
case SL_PP_EOF:
- if (sl_pp_process_out(&state, &input[i])) {
- return -1;
- }
+ endof = input[i];
i++;
found_eof = 1;
found_eol = 1;
@@ -170,6 +167,10 @@ sl_pp_process(struct sl_pp_context *context,
/* XXX: Ignore. */
}
}
+
+ if (sl_pp_process_out(&state, &endof)) {
+ return -1;
+ }
}
break;