From e2fe31fc09fa4622a7c1e2591db15a98cec6aca0 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 31 Jan 2017 14:47:36 +0900 Subject: [PATCH] evas async preload - fix valgrind issue in accessing image after free cache flish and async end ended up dropping some cacneled images that were then accessed further in the cancel func for the thread. this fixes that @fix --- src/lib/evas/cache/evas_cache_image.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/evas/cache/evas_cache_image.c b/src/lib/evas/cache/evas_cache_image.c index 3c46d4a81a..14940d93a8 100644 --- a/src/lib/evas/cache/evas_cache_image.c +++ b/src/lib/evas/cache/evas_cache_image.c @@ -462,13 +462,6 @@ _evas_cache_image_async_cancel(void *data) _evas_cache_image_entry_delete(ie->cache, ie); return; } - if (ie->flags.loaded) _evas_cache_image_async_end(ie); - if (ie->references == 0) - { - _evas_cache_image_lru_add(ie); - cache = ie->cache; - } - if (cache) evas_cache_image_flush(cache); SLKL(ie->lock_task); if (ie->targets) { @@ -483,6 +476,13 @@ _evas_cache_image_async_cancel(void *data) ie); } SLKU(ie->lock_task); + if (ie->references == 0) + { + _evas_cache_image_lru_add(ie); + cache = ie->cache; + } + if (ie->flags.loaded) _evas_cache_image_async_end(ie); + if (cache) evas_cache_image_flush(cache); } // note - preload_add assumes a target is ONLY added ONCE to the image