Use yy_scan_string and stop caring about shader->SourceLen.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Jun 2010 18:43:42 +0000 (11:43 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Jun 2010 19:41:05 +0000 (12:41 -0700)
We had to call strlen on the preprocessed source, which seemed a bit
pointless; also, we updated shader->SourceLen but not shader->Source,
which was even more confusing.  Just leave both untouched.

glcpp/pp.c
glsl_lexer.lpp
glsl_parser_extras.h
main.cpp

index eaca481..e6921db 100644 (file)
@@ -57,7 +57,7 @@ glcpp_warning (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)
 }
 
 extern int
-preprocess(void *talloc_ctx, const char **shader, size_t *shader_len)
+preprocess(void *talloc_ctx, const char **shader)
 {
        int errors;
        glcpp_parser_t *parser = glcpp_parser_create ();
@@ -69,7 +69,6 @@ preprocess(void *talloc_ctx, const char **shader, size_t *shader_len)
 
        talloc_steal(talloc_ctx, parser->output);
        *shader = parser->output;
-       *shader_len = strlen(parser->output);
 
        errors = parser->error;
        glcpp_parser_destroy (parser);
index cd150f8..9a3037a 100644 (file)
@@ -330,11 +330,10 @@ precision return PRECISION;
 %%
 
 void
-_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state,
-                     const char *string, size_t len)
+_mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state, const char *string)
 {
    yylex_init_extra(state, & state->scanner);
-   yy_scan_bytes(string, len, state->scanner);
+   yy_scan_string(string, state->scanner);
 }
 
 void
index cad3424..1edd86b 100644 (file)
@@ -102,11 +102,11 @@ extern void _mesa_glsl_warning(const YYLTYPE *locp,
                               const char *fmt, ...);
 
 extern "C" {
-extern int preprocess(void *ctx, const char **shader, size_t *shader_len);
+extern int preprocess(void *ctx, const char **shader);
 }
 
 extern void _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state,
-                                 const char *string, size_t len);
+                                 const char *string);
 
 extern void _mesa_glsl_lexer_dtor(struct _mesa_glsl_parse_state *state);
 
index 58657fe..2590438 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -128,10 +128,10 @@ compile_shader(struct glsl_shader *shader)
     * should probably be the parser context, but there isn't one yet.
    */
    const char *source = shader->Source;
-   state.error = preprocess(shader, &source, &shader->SourceLen);
+   state.error = preprocess(shader, &source);
 
    if (!state.error) {
-      _mesa_glsl_lexer_ctor(& state, source, shader->SourceLen);
+      _mesa_glsl_lexer_ctor(& state, source);
       _mesa_glsl_parse(& state);
       _mesa_glsl_lexer_dtor(& state);
    }