glsl: Rely on talloc_autofree_context() instead of trying to free on our own.

Because the static types talloc their names at dlopen time,
talloc_freeing the types at DRI driver screen teardown means that if
the screen gets brought back up again, the names will point at freed
memory.  talloc_autofree_context() exists to do just what we want
here: Free memory referenced across the program's lifetime so that we
avoid noise in memory leak checkers.

Fixes: bug #29722 (assertion failure in unigine).
This commit is contained in:
Eric Anholt 2010-08-23 17:16:25 -07:00
parent e0564d56b1
commit 8dd619ba68

View file

@ -41,7 +41,7 @@ void
glsl_type::init_talloc_type_ctx(void)
{
if (glsl_type::mem_ctx == NULL) {
glsl_type::mem_ctx = talloc_init("glsl_type");
glsl_type::mem_ctx = talloc_autofree_context();
assert(glsl_type::mem_ctx != NULL);
}
}
@ -230,11 +230,6 @@ _mesa_glsl_release_types(void)
hash_table_dtor(glsl_type::record_types);
glsl_type::record_types = NULL;
}
if (glsl_type::mem_ctx != NULL) {
talloc_free(glsl_type::mem_ctx);
glsl_type::mem_ctx = NULL;
}
}