diff --git a/src/lib/evas/cache2/evas_cache2.c b/src/lib/evas/cache2/evas_cache2.c index 35cceb6e65..d4b2b5353b 100644 --- a/src/lib/evas/cache2/evas_cache2.c +++ b/src/lib/evas/cache2/evas_cache2.c @@ -1089,15 +1089,13 @@ evas_cache2_image_writable(Image_Entry *im) evas_cache2_image_pixels(im), im->flags.alpha, im->space); if (!im2) - goto on_error; + { + ERR("Could not create a copy of this image (%dx%d)", im->w, im->h); + return NULL; + } evas_cache2_image_close(im); return im2; - -on_error: - if (im2) - _evas_cache2_image_entry_delete(cache, im2); - return NULL; } EAPI Image_Entry * diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 57766ef34c..b3ab2ce6bc 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -1087,7 +1087,14 @@ eng_image_data_get(void *data EINA_UNUSED, void *image, int to_write, DATA32 **i if (err) *err = error; if (to_write) - im = (RGBA_Image *)evas_cache2_image_writable(&im->cache_entry); + { + im = (RGBA_Image *)evas_cache2_image_writable(&im->cache_entry); + if (!im) + { + *image_data = NULL; + return NULL; + } + } } else #endif