Mesa (gallium-mesa-7.4): trace: Defer the cast to after the check for enabled trace.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Mon May 25 14:57:18 UTC 2009


Module: Mesa
Branch: gallium-mesa-7.4
Commit: 2b6516da1b6e213b3af1cd1e841cdf18d294466d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b6516da1b6e213b3af1cd1e841cdf18d294466d

Author: José Fonseca <jfonseca at vmware.com>
Date:   Wed Mar 25 21:45:57 2009 +0000

trace: Defer the cast to after the check for enabled trace.

Prevents segfault when trace is disabled.

---

 src/gallium/drivers/trace/tr_context.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c
index bc65af0..c541a60 100644
--- a/src/gallium/drivers/trace/tr_context.c
+++ b/src/gallium/drivers/trace/tr_context.c
@@ -992,23 +992,28 @@ trace_context_destroy(struct pipe_context *_pipe)
 
 
 struct pipe_context *
-trace_context_create(struct pipe_screen *screen, 
+trace_context_create(struct pipe_screen *_screen,
                      struct pipe_context *pipe)
 {
+   struct trace_screen *tr_scr;
    struct trace_context *tr_ctx;
-   
+   struct pipe_screen *screen;
+
    if(!pipe)
       goto error1;
    
    if(!trace_dump_enabled())
       goto error1;
    
+   tr_scr = trace_screen(_screen);
+   screen = tr_scr->screen;
+
    tr_ctx = CALLOC_STRUCT(trace_context);
    if(!tr_ctx)
       goto error1;
 
-   tr_ctx->base.winsys = screen->winsys;
-   tr_ctx->base.screen = screen;
+   tr_ctx->base.winsys = _screen->winsys;
+   tr_ctx->base.screen = _screen;
    tr_ctx->base.destroy = trace_context_destroy;
    tr_ctx->base.set_edgeflags = trace_context_set_edgeflags;
    tr_ctx->base.draw_arrays = trace_context_draw_arrays;
@@ -1055,9 +1060,7 @@ trace_context_create(struct pipe_screen *screen,
    tr_ctx->pipe = pipe;
    
    trace_dump_call_begin("", "pipe_context_create");
-   trace_dump_arg_begin("screen");
-   trace_dump_ptr(pipe->screen);
-   trace_dump_arg_end();
+   trace_dump_arg(ptr, screen);
    trace_dump_ret(ptr, pipe);
    trace_dump_call_end();
 




More information about the mesa-commit mailing list