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 <charmainel@vmware.com>
This commit is contained in:
Brian Paul 2015-09-10 08:47:16 -06:00
parent ece33f9687
commit 289804515f
2 changed files with 6 additions and 0 deletions

View file

@ -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;

View file

@ -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;