Mesa (master): r300g: fix possible crash in destroy_context

Marek Olšák mareko at kemper.freedesktop.org
Mon Jul 19 19:15:43 UTC 2010


Module: Mesa
Branch: master
Commit: 3b189d888a99336a2df037e2b595844d4b9e05b5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b189d888a99336a2df037e2b595844d4b9e05b5

Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Jul 19 20:47:30 2010 +0200

r300g: fix possible crash in destroy_context

The problem is destroy_context is almost NEVER called.
The only test for destroy_context I know is compiz.

Reported by Vinson Lee.

FDO bug #29150.

---

 src/gallium/drivers/r300/r300_context.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
index 5093c14..df90359 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -122,6 +122,8 @@ static void r300_destroy_context(struct pipe_context* context)
 
     util_mempool_destroy(&r300->pool_transfers);
 
+    r300_update_num_contexts(r300->screen, -1);
+
     FREE(r300->aa_state.state);
     FREE(r300->blend_color_state.state);
     FREE(r300->clip_state.state);
@@ -141,8 +143,6 @@ static void r300_destroy_context(struct pipe_context* context)
         FREE(r300->vertex_stream_state.state);
     }
     FREE(r300);
-
-    r300_update_num_contexts(r300->screen, -1);
 }
 
 void r300_flush_cb(void *data)




More information about the mesa-commit mailing list