From aa7be1a96de83871db284e4fb924e6dc0ccaed59 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 9 Mar 2021 16:04:45 +0000 Subject: [PATCH] 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);