diff options
-rw-r--r-- | glsl_parser_extras.cpp | 44 | ||||
-rw-r--r-- | ir_reader.cpp | 16 |
2 files changed, 31 insertions, 29 deletions
diff --git a/glsl_parser_extras.cpp b/glsl_parser_extras.cpp index 8cf765f95d..7bd30de7c2 100644 --- a/glsl_parser_extras.cpp +++ b/glsl_parser_extras.cpp @@ -25,6 +25,10 @@ #include <string.h> #include <assert.h> +extern "C" { +#include <talloc.h> +} + #include "ast.h" #include "glsl_parser_extras.h" #include "glsl_parser.h" @@ -47,24 +51,20 @@ void _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state, const char *fmt, ...) { - char buf[1024]; - int len; va_list ap; state->error = true; - len = snprintf(buf, sizeof(buf), "%u:%u(%u): error: ", - locp->source, locp->first_line, locp->first_column); - + assert(state->info_log != NULL); + state->info_log = talloc_asprintf_append(state->info_log, + "%u:%u(%u): error: ", + locp->source, + locp->first_line, + locp->first_column); va_start(ap, fmt); - vsnprintf(buf + len, sizeof(buf) - len, fmt, ap); + state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap); va_end(ap); - - printf("%s\n", buf); - - if (state->info_log) - free(state->info_log); - state->info_log = strdup(buf); + state->info_log = talloc_strdup_append(state->info_log, "\n"); } @@ -72,22 +72,18 @@ void _mesa_glsl_warning(const YYLTYPE *locp, _mesa_glsl_parse_state *state, const char *fmt, ...) { - char buf[1024]; - int len; va_list ap; - len = snprintf(buf, sizeof(buf), "%u:%u(%u): warning: ", - locp->source, locp->first_line, locp->first_column); - + assert(state->info_log != NULL); + state->info_log = talloc_asprintf_append(state->info_log, + "%u:%u(%u): warning: ", + locp->source, + locp->first_line, + locp->first_column); va_start(ap, fmt); - vsnprintf(buf + len, sizeof(buf) - len, fmt, ap); + state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap); va_end(ap); - - printf("%s\n", buf); - - if (!state->info_log) { - state->info_log = strdup(buf); - } + state->info_log = talloc_strdup_append(state->info_log, "\n"); } diff --git a/ir_reader.cpp b/ir_reader.cpp index 23981a0f51..5cbce333f4 100644 --- a/ir_reader.cpp +++ b/ir_reader.cpp @@ -22,6 +22,11 @@ */ #include <cstdio> #include <cstdarg> + +extern "C" { +#include <talloc.h> +} + #include "ir_reader.h" #include "glsl_parser_extras.h" #include "glsl_types.h" @@ -86,17 +91,18 @@ ir_read_error(_mesa_glsl_parse_state *state, s_expression *expr, state->error = true; - printf("error: "); + state->info_log = talloc_strdup_append(state->info_log, "error: "); va_start(ap, fmt); - vprintf(fmt, ap); + state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap); va_end(ap); - printf("\n"); + state->info_log = talloc_strdup_append(state->info_log, "\n"); if (expr != NULL) { - printf("...in this context:\n "); + state->info_log = talloc_strdup_append(state->info_log, + "...in this context:\n "); expr->print(); - printf("\n\n"); + state->info_log = talloc_strdup_append(state->info_log, "\n\n"); } } |