diff options
author | Eric Anholt <[email protected]> | 2010-08-18 11:36:09 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2010-08-18 14:16:07 -0700 |
commit | 4a6a4316846ead3ec12759c96ecc4b61491aad65 (patch) | |
tree | 36b49c365310c0071da4ccdc132fe5aa16172aa0 | |
parent | 0df61bdb669d03d9c25e49d5698f193deca3cf6d (diff) |
mesa: Hang the compiled shader off the shader->ir, not the shader.
Otherwise, with repeated program recompile, we never free the results
of the previous compile.
-rw-r--r-- | src/mesa/program/ir_to_mesa.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 58d3b41d083..8ed3834061a 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -2662,6 +2662,7 @@ _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader) _mesa_glsl_lexer_dtor(state); } + talloc_free(shader->ir); shader->ir = new(shader) exec_list; if (!state->error && !state->translation_unit.is_empty()) _mesa_ast_to_hir(shader->ir, state); @@ -2706,7 +2707,7 @@ _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader) } /* Retain any live IR, but trash the rest. */ - reparent_ir(shader->ir, shader); + reparent_ir(shader->ir, shader->ir); talloc_free(state); |