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");     }  } | 
