mesa: move unrefs of array objects earlier in _mesa_free_context_data()

If a non-default array object was bound at context destruction time
we'd try to unreference the array object after it was already deleted
in _mesa_free_varray_data().  Now do the unref first.

Fixes a regression from commit 86f53e6d6b.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
Brian Paul
2012-04-19 07:56:05 -06:00
parent 939b26639f
commit 0e5327ecf4

View File

@@ -1104,6 +1104,9 @@ _mesa_free_context_data( struct gl_context *ctx )
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, NULL);
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL);
_mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, NULL);
_mesa_reference_array_object(ctx, &ctx->Array.DefaultArrayObj, NULL);
_mesa_free_attrib_data(ctx);
_mesa_free_buffer_objects(ctx);
_mesa_free_lighting_data( ctx );
@@ -1118,9 +1121,6 @@ _mesa_free_context_data( struct gl_context *ctx )
_mesa_free_varray_data(ctx);
_mesa_free_transform_feedback(ctx);
_mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, NULL);
_mesa_reference_array_object(ctx, &ctx->Array.DefaultArrayObj, NULL);
#if FEATURE_ARB_pixel_buffer_object
_mesa_reference_buffer_object(ctx, &ctx->Pack.BufferObj, NULL);
_mesa_reference_buffer_object(ctx, &ctx->Unpack.BufferObj, NULL);