diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2021-03-09 16:04:45 +0000 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2021-03-09 16:04:45 +0000 |
commit | aa7be1a96de83871db284e4fb924e6dc0ccaed59 (patch) | |
tree | a958db33e03402878d6f7cdb67b55a0697f41d27 | |
parent | d8023529a1d747e97babca90a1072be5cddecbb7 (diff) | |
download | efl-aa7be1a96de83871db284e4fb924e6dc0ccaed59.tar.gz |
evas gl - remove freed gl image from context image list
fix asan memory mis-access
@fix
-rw-r--r-- | src/lib/evas/canvas/evas_object_image.c | 2 | ||||
-rw-r--r-- | src/modules/evas/engines/gl_common/evas_gl_image.c | 4 |
2 files changed, 5 insertions, 1 deletions
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); |