diff options
author | Michal Krol <michal@vmware.com> | 2009-09-04 11:39:30 +0200 |
---|---|---|
committer | Michal Krol <michal@vmware.com> | 2009-09-07 10:12:03 +0200 |
commit | ddd8ae7fbc643892b08ddf66c67bca36d42b53a6 (patch) | |
tree | 888fee1d5cd79d517d3352288bd0f9a40d8beebb /src | |
parent | 7f187583c14448047c95d933a96b190273a881e5 (diff) |
glsl: Output endof token after processing a directive.
Some directives may output tokens as a result of their operation.
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/pp/sl_pp_process.c | 13 |
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 be01f9139c..18289790d1 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; |