From: Brian Paul Date: Thu, 10 Sep 2015 14:47:16 +0000 (-0600) Subject: svga: fix shader variant memory leak X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=289804515f7de20cb41a5e1b4c20864f0dab8d51;p=mesa.git svga: fix shader variant memory leak Fixes a small leak in a seldom-hit corner case for VS/FS compilation. Found with coverity. Reviewed-by: Charmaine Lee --- diff --git a/src/gallium/drivers/svga/svga_state_fs.c b/src/gallium/drivers/svga/svga_state_fs.c index 849319d3cf3..5d39100f63a 100644 --- a/src/gallium/drivers/svga/svga_state_fs.c +++ b/src/gallium/drivers/svga/svga_state_fs.c @@ -148,6 +148,9 @@ compile_fs(struct svga_context *svga, " using dummy shader instead.\n", (unsigned) (variant->nr_tokens * sizeof(variant->tokens[0]))); + /* Free the too-large variant */ + svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant); + /* Use simple pass-through shader instead */ variant = get_compiled_dummy_shader(svga, fs, key); if (!variant) { ret = PIPE_ERROR; diff --git a/src/gallium/drivers/svga/svga_state_vs.c b/src/gallium/drivers/svga/svga_state_vs.c index 45dcb5d0f76..de41519593c 100644 --- a/src/gallium/drivers/svga/svga_state_vs.c +++ b/src/gallium/drivers/svga/svga_state_vs.c @@ -139,6 +139,9 @@ compile_vs(struct svga_context *svga, " using dummy shader instead.\n", (unsigned) (variant->nr_tokens * sizeof(variant->tokens[0]))); + /* Free the too-large variant */ + svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant); + /* Use simple pass-through shader instead */ variant = get_compiled_dummy_vertex_shader(svga, vs, key); if (!variant) { ret = PIPE_ERROR;