Fix freeing an atlas texture that hasn't been allocated

The free function for atlas textures was previously always assuming
that there will be a valid sub_texture pointer but this might not be
the case if the texture was never successfully allocated. This was
causing Cogl to crash if the application tries to make a texture that
can not fit in the atlas using the automagic texture API.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit a7a8b7aefc8cb03fe8b716bee06b3449a7dba85f)
This commit is contained in:
Neil Roberts 2013-06-11 15:57:38 +01:00
parent 49a30eecfb
commit fa0df6ea96
2 changed files with 3 additions and 2 deletions

View File

@ -276,6 +276,7 @@ _cogl_atlas_texture_free (CoglAtlasTexture *atlas_tex)
{
_cogl_atlas_texture_remove_from_atlas (atlas_tex);
if (atlas_tex->sub_texture)
cogl_object_unref (atlas_tex->sub_texture);
/* Chain up */

View File

@ -138,7 +138,7 @@ main (int argc, char **argv)
ADD_TEST (test_fence, TEST_REQUIREMENT_FENCE, 0);
ADD_TEST (test_texture_no_allocate, 0, TEST_KNOWN_FAILURE);
ADD_TEST (test_texture_no_allocate, 0, 0);
g_printerr ("Unknown test name \"%s\"\n", argv[1]);