raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=e03ab668a17202cd6f07dca0cbf2fad6beb32cce

commit e03ab668a17202cd6f07dca0cbf2fad6beb32cce
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Nov 25 22:29:12 2013 +0900

    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 5ee36b6..fee5823 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);

-- 


Reply via email to