evas - async preload cancel fix - don't double delete/free
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 10 Apr 2017 01:40:52 +0000 (10:40 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 10 Apr 2017 01:40:52 +0000 (10:40 +0900)
just match the ref with the drop anddon't also manually free the image
as this leads to accessing of freed memory which is not a good thing.

this should fix T5374

@fix

src/lib/evas/cache/evas_cache_image.c

index ff95858..51b0bf1 100644 (file)
@@ -447,11 +447,10 @@ _evas_cache_image_async_cancel(void *data)
 
    if ((ie->flags.delete_me) || (ie->flags.dirty))
      {
-        ie->flags.delete_me = 0;
-        evas_cache_image_drop(ie);
         SLKL(engine_lock);
-        _evas_cache_image_entry_delete(ie->cache, ie);
+        ie->flags.delete_me = 0;
         SLKU(engine_lock);
+        evas_cache_image_drop(ie);
         return;
      }
    SLKL(ie->lock_task);