From e03ab668a17202cd6f07dca0cbf2fad6beb32cce Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 25 Nov 2013 22:29:12 +0900 Subject: [PATCH] evas - gl engine - async texture upload - protect null tex handle access this stops a very blantant segv when accessing async->tex when it is NULL on _evas_gl_preload_main_loop_wakeup(). --- .../evas/engines/gl_common/evas_gl_preload.c | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/modules/evas/engines/gl_common/evas_gl_preload.c b/src/modules/evas/engines/gl_common/evas_gl_preload.c index 5ee36b6610..fee582383b 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_preload.c +++ b/src/modules/evas/engines/gl_common/evas_gl_preload.c @@ -102,18 +102,26 @@ _evas_gl_preload_main_loop_wakeup(void) { Eo *target; - EINA_LIST_FREE(async->tex->targets, target) - eo_do(target, evas_obj_image_pixels_dirty_set(EINA_TRUE)); + if (async->tex) + { + EINA_LIST_FREE(async->tex->targets, target) + eo_do(target, evas_obj_image_pixels_dirty_set(EINA_TRUE)); + } async->im->cache_entry.flags.preload_done = 0; - async->tex->was_preloaded = EINA_TRUE; + if (async->tex) + { + async->tex->was_preloaded = EINA_TRUE; - async->tex->ptt->allocations = eina_list_remove(async->tex->ptt->allocations, async->tex->aptt); - pt_unref(async->tex->ptt); - async->tex->ptt = NULL; - free(async->tex->aptt); - async->tex->aptt = NULL; + async->tex->ptt->allocations = + eina_list_remove(async->tex->ptt->allocations, + async->tex->aptt); + pt_unref(async->tex->ptt); + async->tex->ptt = NULL; + free(async->tex->aptt); + async->tex->aptt = NULL; - evas_gl_common_texture_free(async->tex, EINA_FALSE); + evas_gl_common_texture_free(async->tex, EINA_FALSE); + } #ifdef EVAS_CSERVE2 if (evas_cache2_image_cached(&async->im->cache_entry)) evas_cache2_image_close(&async->im->cache_entry);