summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2020-01-31 13:51:38 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2020-01-31 13:52:51 +0100
commit509ad380832736361e01510991d27c67f8d10664 (patch)
tree1378a8563beb79c7c731aa206efd90cff3a0bb17
parent260964dbdd82354e6a616e3d3b96bd184fd139aa (diff)
downloadefl-509ad380832736361e01510991d27c67f8d10664.tar.gz
evas_object_grid: fix leaking of pointer
priv->children was leaked to a freed pointer here. This is now fixed.
-rw-r--r--src/lib/evas/canvas/evas_object_grid.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/lib/evas/canvas/evas_object_grid.c b/src/lib/evas/canvas/evas_object_grid.c
index 72cb176ecc..cecff65584 100644
--- a/src/lib/evas/canvas/evas_object_grid.c
+++ b/src/lib/evas/canvas/evas_object_grid.c
@@ -176,16 +176,14 @@ static void
_evas_object_grid_smart_del(Evas_Object *o)
{
EVAS_OBJECT_GRID_DATA_GET(o, priv);
- Eina_List *l;
- l = priv->children;
- while (l)
+ while (priv->children)
{
- Evas_Object_Grid_Option *opt = l->data;
- _evas_object_grid_child_disconnect(o, opt->obj);
- _evas_object_grid_option_del(opt->obj);
- free(opt);
- l = eina_list_remove_list(l, l);
+ Evas_Object_Grid_Option *opt = priv->children->data;
+ _evas_object_grid_child_disconnect(o, opt->obj);
+ _evas_object_grid_option_del(opt->obj);
+ free(opt);
+ priv->children = eina_list_remove_list(priv->children, priv->children);
}
_evas_object_grid_parent_sc->del(o);
@@ -352,7 +350,7 @@ _evas_grid_pack(Eo *o, Evas_Grid_Data *priv, Evas_Object *child, int x, int y, i
}
// FIXME: we could keep a changed list
evas_object_smart_changed(o);
-
+
return EINA_TRUE;
}
@@ -385,7 +383,7 @@ _evas_grid_unpack(Eo *o, Evas_Grid_Data *priv, Evas_Object *child)
_evas_object_grid_remove_opt(priv, opt);
evas_object_smart_member_del(child);
free(opt);
-
+
return EINA_TRUE;
}