summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2021-03-09 16:04:45 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2021-03-09 16:04:45 +0000
commitaa7be1a96de83871db284e4fb924e6dc0ccaed59 (patch)
treea958db33e03402878d6f7cdb67b55a0697f41d27
parentd8023529a1d747e97babca90a1072be5cddecbb7 (diff)
downloadefl-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.c2
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_image.c4
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);