From 0fffaa512cbd347af0b81571753d4da6dd58a81e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 16 Feb 2012 12:23:16 -0700 Subject: [PATCH] svga: use pipe_sampler_view_release() to avoid segfault This fixes another case of faulting when freeing a pipe_sampler_view that belongs to a previously destroyed context. Reviewed-by: Jose Fonseca --- src/gallium/drivers/svga/svga_pipe_sampler.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/svga/svga_pipe_sampler.c b/src/gallium/drivers/svga/svga_pipe_sampler.c index 13c7b181b7c..c1ea4f8a923 100644 --- a/src/gallium/drivers/svga/svga_pipe_sampler.c +++ b/src/gallium/drivers/svga/svga_pipe_sampler.c @@ -225,8 +225,12 @@ svga_set_fragment_sampler_views(struct pipe_context *pipe, } for (i = 0; i < num; i++) { - pipe_sampler_view_reference(&svga->curr.sampler_views[i], - views[i]); + /* Note: we're using pipe_sampler_view_release() here to work around + * a possible crash when the old view belongs to another context that + * was already destroyed. + */ + pipe_sampler_view_release(pipe, &svga->curr.sampler_views[i]); + pipe_sampler_view_reference(&svga->curr.sampler_views[i], views[i]); if (!views[i]) continue; -- 2.30.2