From fa0df6ea96ac445cf373d1fc88904d46a677a08b Mon Sep 17 00:00:00 2001 From: Neil Roberts Date: Tue, 11 Jun 2013 15:57:38 +0100 Subject: [PATCH] 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 (cherry picked from commit a7a8b7aefc8cb03fe8b716bee06b3449a7dba85f) --- cogl/cogl-atlas-texture.c | 3 ++- tests/conform/test-conform-main.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cogl/cogl-atlas-texture.c b/cogl/cogl-atlas-texture.c index 7f62efceb..30dd319e5 100644 --- a/cogl/cogl-atlas-texture.c +++ b/cogl/cogl-atlas-texture.c @@ -276,7 +276,8 @@ _cogl_atlas_texture_free (CoglAtlasTexture *atlas_tex) { _cogl_atlas_texture_remove_from_atlas (atlas_tex); - cogl_object_unref (atlas_tex->sub_texture); + if (atlas_tex->sub_texture) + cogl_object_unref (atlas_tex->sub_texture); /* Chain up */ _cogl_texture_free (COGL_TEXTURE (atlas_tex)); diff --git a/tests/conform/test-conform-main.c b/tests/conform/test-conform-main.c index 174410eca..5e3f09190 100644 --- a/tests/conform/test-conform-main.c +++ b/tests/conform/test-conform-main.c @@ -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]);