From b08583da468ee186b43ea678f8d33fb7df3ab372 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Wed, 6 Jan 2010 17:13:37 +0000 Subject: llvmpipe: fix double free --- src/gallium/drivers/llvmpipe/lp_context.c | 5 ++--- src/gallium/drivers/llvmpipe/lp_setup.c | 3 ++- src/gallium/drivers/llvmpipe/lp_setup.h | 2 -- src/gallium/drivers/llvmpipe/lp_setup_context.h | 2 ++ 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/gallium') diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c index 0457ccc8a9..696a9d5f6a 100644 --- a/src/gallium/drivers/llvmpipe/lp_context.c +++ b/src/gallium/drivers/llvmpipe/lp_context.c @@ -53,12 +53,11 @@ static void llvmpipe_destroy( struct pipe_context *pipe ) struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe ); uint i; + /* This will also destroy llvmpipe->setup: + */ if (llvmpipe->draw) draw_destroy( llvmpipe->draw ); - if (llvmpipe->setup) - lp_setup_destroy( llvmpipe->setup ); - for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) { pipe_surface_reference(&llvmpipe->framebuffer.cbufs[i], NULL); } diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index e2b21aed47..1eb944a0de 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -571,7 +571,8 @@ lp_setup_update_state( struct setup_context *setup ) - +/* Only caller is lp_setup_vbuf_destroy() + */ void lp_setup_destroy( struct setup_context *setup ) { diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h index a6120fcbe4..bf12cb8527 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.h +++ b/src/gallium/drivers/llvmpipe/lp_setup.h @@ -128,7 +128,5 @@ void lp_setup_set_vertex_info( struct setup_context *setup, struct vertex_info *info ); -void -lp_setup_destroy( struct setup_context *setup ); #endif diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h index d2278a46e6..a1808fcd4c 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_context.h +++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h @@ -141,4 +141,6 @@ void lp_setup_init_vbuf(struct setup_context *setup); void lp_setup_update_state( struct setup_context *setup ); +void lp_setup_destroy( struct setup_context *setup ); + #endif -- cgit v1.2.3