From 96adcc2e214e2fdc2ad15ecac20b1066c6cdd1ca Mon Sep 17 00:00:00 2001 From: Nicolai Haehnle Date: Sun, 1 Jun 2008 00:10:45 +0200 Subject: [t_vp_build] Fix refcounting-related memory leak This memory leak is identical to the earlier one in texenvprogram. Fixed by not creating an additional reference to new programs in cache_item. On top of that, remove some duplicated state setting. --- src/mesa/tnl/t_vp_build.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c index 46446d4885..d79f84f1eb 100644 --- a/src/mesa/tnl/t_vp_build.c +++ b/src/mesa/tnl/t_vp_build.c @@ -1511,7 +1511,8 @@ static void cache_item( GLcontext *ctx, struct tnl_cache_item *c = CALLOC_STRUCT(tnl_cache_item); c->hash = hash; c->key = key; - _mesa_reference_vertprog(ctx, &c->prog, prog); + + c->prog = prog; if (++cache->n_items > cache->size * 1.5) rehash(cache); @@ -1569,9 +1570,8 @@ void _tnl_UpdateFixedFunctionProgram( GLcontext *ctx ) ctx->Driver.ProgramStringNotify( ctx, GL_VERTEX_PROGRAM_ARB, &newProg->Base ); + /* Our ownership of newProg is transferred to the cache */ cache_item(ctx, tnl->vp_cache, hash, key, newProg); - - _mesa_reference_vertprog(ctx, &ctx->VertexProgram._TnlProgram, newProg); } else { FREE(key); -- cgit v1.2.3