diff options
author | Tilman Sauerbeck <tilman@code-monkey.de> | 2010-09-09 14:03:46 +0200 |
---|---|---|
committer | Tilman Sauerbeck <tilman@code-monkey.de> | 2010-09-10 13:09:33 +0200 |
commit | ac2bddb9f2c40effb16db321db0177decea81a92 (patch) | |
tree | 03dc397ff600a2cd2103ac6720607ef99add55d6 /src | |
parent | ae23d425c2aae652f4fc61ee8dee721e8e25509e (diff) |
r600g: Fixed a bo leak in r600_texture_from_handle().
We would leak bo if the argument check failed.
Signed-off-by: Tilman Sauerbeck <tilman@code-monkey.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r600/r600_texture.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index dec616bce88..37907ef0e9a 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -199,11 +199,6 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen, struct r600_resource *resource; struct radeon_bo *bo = NULL; - bo = radeon_bo(rw, whandle->handle, 0, 0, NULL); - if (bo == NULL) { - return NULL; - } - /* Support only 2D textures without mipmaps */ if ((templ->target != PIPE_TEXTURE_2D && templ->target != PIPE_TEXTURE_RECT) || templ->depth0 != 1 || templ->last_level != 0) @@ -213,6 +208,12 @@ struct pipe_resource *r600_texture_from_handle(struct pipe_screen *screen, if (rtex == NULL) return NULL; + bo = radeon_bo(rw, whandle->handle, 0, 0, NULL); + if (bo == NULL) { + FREE(rtex); + return NULL; + } + resource = &rtex->resource; resource->base.b = *templ; resource->base.vtbl = &r600_texture_vtbl; |