mesa: move unrefs of array objects earlier in _mesa_free_context_data()
authorBrian Paul <brianp@vmware.com>
Thu, 19 Apr 2012 13:56:05 +0000 (07:56 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 19 Apr 2012 17:22:37 +0000 (11:22 -0600)
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 86f53e6d6bd07e2bc3ffcadeb9a4418fbae06e0b.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/mesa/main/context.c

index a506981b45149f4045de390ce835295038e37ae0..d75351c8598429636fdb8b1a11ee43152c72c723 100644 (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);