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

Author: Brian Paul <[email protected]>
Date:   Thu Sep 10 08:47:16 2015 -0600

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 <[email protected]>

---

 src/gallium/drivers/svga/svga_state_fs.c |    3 +++
 src/gallium/drivers/svga/svga_state_vs.c |    3 +++
 2 files changed, 6 insertions(+)

diff --git a/src/gallium/drivers/svga/svga_state_fs.c 
b/src/gallium/drivers/svga/svga_state_fs.c
index 849319d..5d39100 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 45dcb5d..de41519 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;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to