From 8ed1279b1068fe3581f70ad151d0a5881a947d26 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Fri, 22 Feb 2013 08:45:07 +0000 Subject: [PATCH] trace: Never close stdout/stderr. This could happen, when a trace screen was destroyed and then recreated. --- src/gallium/drivers/trace/tr_dump.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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; -- 2.30.2