glcpp: Add boolean 'error' flag.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Jun 2010 19:39:49 +0000 (12:39 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Jun 2010 19:39:49 +0000 (12:39 -0700)
We used to check if the info log is non-empty, but when we print
warnings, this will no longer be valid.

glcpp/glcpp.h
glcpp/pp.c

index e67469be2eba68858fbc51bedfd9b8612aabac2d..8167a481d5eb86dd5d3822f50e796750d9050bd9 100644 (file)
@@ -155,6 +155,7 @@ struct glcpp_parser {
        token_node_t *lex_from_node;
        char *output;
        char *info_log;
+       int error;
 };
 
 glcpp_parser_t *
index f8a7c2ea4d582122194e99dbd910da727ac4273e..846d35506fb510e5f390a66edc64eb900a642d4e 100644 (file)
@@ -26,6 +26,7 @@
 void
 glcpp_error (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)
 {
+       parser->error = 1;
        parser->info_log = talloc_asprintf_append(parser->info_log,
                                                  "%u:%u(%u): "
                                                  "preprocessor error: ",
@@ -48,13 +49,13 @@ preprocess(void *talloc_ctx, const char **shader, size_t *shader_len)
 
        glcpp_parser_parse (parser);
 
-       errors = parser->info_log[0] != '\0';
        printf("%s", parser->info_log);
 
        talloc_steal(talloc_ctx, parser->output);
        *shader = parser->output;
        *shader_len = strlen(parser->output);
 
+       errors = parser->error;
        glcpp_parser_destroy (parser);
        return errors;
 }