diff options
author | Neha Bhende <[email protected]> | 2016-10-28 11:29:11 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2016-11-03 14:29:22 -0600 |
commit | 9a9627a791194a35ffd3573fbfa008cba0511a68 (patch) | |
tree | f59e9665fb0d696e05e51795be78e6a6ebb202b7 /src | |
parent | d787ce7288d63923dd8211e117baea86faaf3539 (diff) |
svga: fix memory leak in svga_clear_texture()
Piglit tests which uses arb_clear_texture extension, have memory leak issue.
pipe_surface created in svga_clear_texture() was not deleted which happens to be
the cause for memory leak.
tested all arb_clear_texture-* piglit tests with valgrid.
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Charmaine Lee <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/svga/svga_pipe_clear.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/drivers/svga/svga_pipe_clear.c b/src/gallium/drivers/svga/svga_pipe_clear.c index 803afc60ff8..56db713cfc9 100644 --- a/src/gallium/drivers/svga/svga_pipe_clear.c +++ b/src/gallium/drivers/svga/svga_pipe_clear.c @@ -323,8 +323,10 @@ svga_clear_texture(struct pipe_context *pipe, struct pipe_surface *dsv = svga_validate_surface_view(svga, svga_surface_dst); - if (!dsv) + if (!dsv) { + pipe_surface_reference(&surface, NULL); return; + } if (box->x == 0 && box->y == 0 && box->width == surface->width && box->height == surface->height) { @@ -382,8 +384,10 @@ svga_clear_texture(struct pipe_context *pipe, struct pipe_surface *rtv = svga_validate_surface_view(svga, svga_surface_dst); - if (!rtv) + if (!rtv) { + pipe_surface_reference(&surface, NULL); return; + } if (box->x == 0 && box->y == 0 && box->width == surface->width && box->height == surface->height) { @@ -449,6 +453,7 @@ svga_clear_texture(struct pipe_context *pipe, } } } + pipe_surface_reference(&surface, NULL); } /** |