evas: remove memory leaks from deleted Textblock objects
authorYoungbok Shin <youngb.shin@samsung.com>
Fri, 7 Dec 2018 06:27:13 +0000 (06:27 +0000)
committerJiyoun Park <jy0703.park@samsung.com>
Wed, 16 Jan 2019 02:26:42 +0000 (11:26 +0900)
Even if a object is deleted, its render_pre function could be called.
Especially, Evas Textblock is calling relayout() function if there are
any changes. In relayout() function, it creates at least one paragraph
and one line. Normally, all of paragraphs and its line should be removed
when Evas Textblock object is deleted. But, paragraphs and lines which are
created after deleting its object never be free'd.

@fix
Differential Revision: https://phab.enlightenment.org/D7427

src/lib/evas/canvas/evas_object_textblock.c

index 6c38268..f418c90 100644 (file)
@@ -7029,6 +7029,8 @@ _relayout_if_needed(const Evas_Object *eo_obj, Efl_Canvas_Text_Data *o)
    ASYNC_BLOCK;
    Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
 
+   if (obj->delete_me) return EINA_TRUE;
+
    /* XXX const */
    evas_object_textblock_coords_recalc((Evas_Object *)eo_obj, obj, obj->private_data);
    if (o->formatted.valid)