llvmpipe: fix double free
authorKeith Whitwell <keithw@vmware.com>
Wed, 6 Jan 2010 17:13:37 +0000 (17:13 +0000)
committerKeith Whitwell <keithw@vmware.com>
Wed, 6 Jan 2010 17:13:37 +0000 (17:13 +0000)
src/gallium/drivers/llvmpipe/lp_context.c
src/gallium/drivers/llvmpipe/lp_setup.c
src/gallium/drivers/llvmpipe/lp_setup.h
src/gallium/drivers/llvmpipe/lp_setup_context.h

index 0457ccc8a94167c4a1632ef3b69a6d755a5cf5f3..696a9d5f6a841c55557e55df36d8b94fdc010449 100644 (file)
@@ -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);
    }
index e2b21aed473966375f699304fa985689a424392e..1eb944a0de7901b88f1d1afd2da46a58eff5ebb6 100644 (file)
@@ -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 )
 {
index a6120fcbe408df227fbe15900fc32f3be00705f7..bf12cb852717d9ec31d72234e1aa5364886189f1 100644 (file)
@@ -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
index d2278a46e664ccb3f279b49e5f06bf61ec4eac43..a1808fcd4c0b2e2726dbfb7090e120f2b96d8ba4 100644 (file)
@@ -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