st/mesa: check for dummy programs in destroy_program_variants()

When we destroy an ARB vp/fp whose ID was gen'd but not otherwise used we
get a pointer to the dummy/placeholder program.  We can't destroy that one
so just skip it.  This only failed during context tear-down because
glDeleteProgramsARB() was already aware of dummy programs.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=38086

Note: This is a candidate for the stable branches.

Tested-by: Andreas Boll <andreas.boll.dev@gmail.com>
This commit is contained in:
Brian Paul 2013-02-20 07:39:04 -07:00
parent 8589cc41b3
commit 8bb291b0f5

View file

@ -1142,7 +1142,7 @@ st_print_shaders(struct gl_context *ctx)
static void
destroy_program_variants(struct st_context *st, struct gl_program *program)
{
if (!program)
if (!program || program == &_mesa_DummyProgram)
return;
switch (program->Target) {