raster pushed a commit to branch master.

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

commit aa7be1a96de83871db284e4fb924e6dc0ccaed59
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Tue Mar 9 16:04:45 2021 +0000

    evas gl - remove freed gl image from context image list
    
    fix asan memory mis-access
    
    @fix
---
 src/lib/evas/canvas/evas_object_image.c            | 2 +-
 src/modules/evas/engines/gl_common/evas_gl_image.c | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/evas/canvas/evas_object_image.c 
b/src/lib/evas/canvas/evas_object_image.c
index 1e8e32cd94..84e08fcce1 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -284,8 +284,8 @@ _evas_image_init_set(const Eina_File *f, const char *key,
              ENFN->image_data_preload_cancel(ENC, o->engine_data, eo_obj, 
EINA_FALSE);
           }
         ENFN->image_free(ENC, o->engine_data);
+        o->engine_data = NULL;
      }
-   o->engine_data = NULL;
    o->load_error = EFL_GFX_IMAGE_LOAD_ERROR_NONE;
    if (!lo) return;
    lo->emile.scale_down_by = o->load_opts->scale_down_by;
diff --git a/src/modules/evas/engines/gl_common/evas_gl_image.c 
b/src/modules/evas/engines/gl_common/evas_gl_image.c
index c63e22ecc3..7d05cab15d 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_image.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_image.c
@@ -702,6 +702,10 @@ evas_gl_common_image_free(Evas_GL_Image *im)
         im->fglyph->ext_dat = NULL;
         im->fglyph->ext_dat_free = NULL;
      }
+   else if ((im->gc) && (im->gc->shared))
+     {
+        im->gc->shared->images = eina_list_remove(im->gc->shared->images, im);
+     }
 
    if (im->gc)
      evas_gl_common_context_flush(im->gc);

-- 


Reply via email to