From fac1275822d8f38b8834350a0364d39d1be4e218 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 15 Jun 2010 02:31:48 +0100 Subject: [PATCH] texture cache: don't dereference item->ptr before NULL check mx_texture_cache_get_actor would segfault if it failed to find an existing entry and if clutter_texture_new_from_file() then returned NULL (e.g. due to a missing file). This was because it called clutter_texture_get_base_size() before the if (!item->ptr) check. This simply defers the _get_base_size() request until after the NULL pointer check. --- mx/mx-texture-cache.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mx/mx-texture-cache.c b/mx/mx-texture-cache.c index e76599c..849ce99 100644 --- a/mx/mx-texture-cache.c +++ b/mx/mx-texture-cache.c @@ -396,8 +396,6 @@ mx_texture_cache_get_actor (MxTextureCache *self, item->posX = -1; item->posY = -1; item->ptr = clutter_texture_new_from_file (path, &err); - clutter_texture_get_base_size (CLUTTER_TEXTURE (item->ptr), - &item->width, &item->height); if (!item->ptr) { @@ -410,6 +408,9 @@ mx_texture_cache_get_actor (MxTextureCache *self, return NULL; } + clutter_texture_get_base_size (CLUTTER_TEXTURE (item->ptr), + &item->width, &item->height); + add_texture_to_cache (self, path, item); return mx_subtexture_new (CLUTTER_TEXTURE (item->ptr), 0, 0, item->width, -- 1.6.3.3