jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b6abbf12774811591f6a8af545fd28329271b83e

commit b6abbf12774811591f6a8af545fd28329271b83e
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Mon Aug 31 16:46:19 2015 +0900

    Evas masking: Make sure to check alloc before freeing old image
    
    Okay, I'm being paranoid and this can't possibly happen (calloc
    fail? yeaaaah) but this makes sure we don't return NULL after
    freeing the original image.
---
 src/modules/evas/engines/gl_generic/evas_engine.c | 32 +++++++++++------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c 
b/src/modules/evas/engines/gl_generic/evas_engine.c
index fabd6e0..8211bb6 100644
--- a/src/modules/evas/engines/gl_generic/evas_engine.c
+++ b/src/modules/evas/engines/gl_generic/evas_engine.c
@@ -1229,7 +1229,7 @@ eng_image_scaled_update(void *data EINA_UNUSED, void 
*scaled, void *image,
                         Eina_Bool smooth, Eina_Bool alpha,
                         Evas_Colorspace cspace EINA_UNUSED)
 {
-   Evas_GL_Image *dst = scaled;
+   Evas_GL_Image *dst = scaled, *newdst;
    Evas_GL_Image *src = image;
    Evas_Engine_GL_Context *gc;
    Eina_Bool reffed = EINA_FALSE;
@@ -1266,6 +1266,9 @@ eng_image_scaled_update(void *data EINA_UNUSED, void 
*scaled, void *image,
         return NULL;
      }
 
+   newdst = calloc(1, sizeof(Evas_GL_Image));
+   if (!newdst) return NULL;
+
    if (dst)
      {
         if (dst->scaled.origin == src)
@@ -1283,24 +1286,21 @@ eng_image_scaled_update(void *data EINA_UNUSED, void 
*scaled, void *image,
         evas_gl_common_image_free(dst);
      }
 
-   dst = calloc(1, sizeof(Evas_GL_Image));
-   if (!dst) return NULL;
-
-   dst->references = 1;
-   dst->gc = gc;
-   dst->cs.space = src->cs.space;
-   dst->alpha = alpha;
-   dst->w = dst_w;
-   dst->h = dst_h;
-   dst->tex = src->tex;
-   dst->tex->references++;
-   dst->tex_only = 1;
+   newdst->references = 1;
+   newdst->gc = gc;
+   newdst->cs.space = src->cs.space;
+   newdst->alpha = alpha;
+   newdst->w = dst_w;
+   newdst->h = dst_h;
+   newdst->tex = src->tex;
+   newdst->tex->references++;
+   newdst->tex_only = 1;
 
    if (!reffed) src->references++;
-   dst->scaled.origin = src;
-   dst->scaled.smooth = smooth;
+   newdst->scaled.origin = src;
+   newdst->scaled.smooth = smooth;
 
-   return dst;
+   return newdst;
 }
 
 static void

-- 


Reply via email to