From: José Fonseca Date: Fri, 22 Feb 2013 08:45:07 +0000 (+0000) Subject: trace: Never close stdout/stderr. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8ed1279b1068fe3581f70ad151d0a5881a947d26;p=mesa.git trace: Never close stdout/stderr. This could happen, when a trace screen was destroyed and then recreated. --- diff --git a/src/gallium/drivers/trace/tr_dump.c b/src/gallium/drivers/trace/tr_dump.c index 48c8914f7bb..826ce5bc1ba 100644 --- a/src/gallium/drivers/trace/tr_dump.c +++ b/src/gallium/drivers/trace/tr_dump.c @@ -57,6 +57,7 @@ #include "tr_texture.h" +static boolean close_stream = FALSE; static FILE *stream = NULL; static unsigned refcount = 0; pipe_static_mutex(call_mutex); @@ -228,8 +229,11 @@ trace_dump_trace_close(void) { if(stream) { trace_dump_writes("\n"); - fclose(stream); - stream = NULL; + if (close_stream) { + fclose(stream); + close_stream = FALSE; + stream = NULL; + } refcount = 0; call_no = 0; } @@ -261,12 +265,15 @@ trace_dump_trace_begin(void) if(!stream) { if (strcmp(filename, "stderr") == 0) { + close_stream = FALSE; stream = stderr; } else if (strcmp(filename, "stdout") == 0) { + close_stream = FALSE; stream = stdout; } else { + close_stream = TRUE; stream = fopen(filename, "wt"); if (!stream) return FALSE;