evas: fix CID 1102547 - Resource leak
authorCedric BAIL <cedric@efl.so>
Mon, 14 Oct 2013 11:37:50 +0000 (13:37 +0200)
committerCedric BAIL <cedric@efl.so>
Mon, 14 Oct 2013 11:37:50 +0000 (13:37 +0200)
If all rectangle are clipped out, it is perfectly possible to return
no rectangle, this would lead to a possible leak.

src/lib/evas/common/evas_tiler.c

index b9f982a..9f0fef5 100644 (file)
@@ -939,14 +939,14 @@ evas_common_tilebuf_get_render_rects(Tilebuf *tb)
           }
         return rects;
      }
-   
+
    rbuf = malloc(sizeof(Tilebuf_Rect) * num);
    if (!rbuf) return NULL;
-   
+
    for (i = 0, n = tb->rects.head; n; n = n->next)
      {
         rect_t cur;
-        
+
         cur = ((rect_node_t *)n)->rect;
         RECTS_CLIP_TO_RECT(cur.left, cur.top, cur.width, cur.height,
                            0, 0, tb->outbuf_w, tb->outbuf_h);
@@ -966,6 +966,10 @@ evas_common_tilebuf_get_render_rects(Tilebuf *tb)
              i++;
           }
      }
+
+   // It is possible that due to the clipping we do not return any rectangle here.
+   if (!rects) free(rbuf);
+
    return rects;
 }