summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2020-01-17 14:40:58 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2020-01-17 14:46:44 +0100
commit59272b15304fc6960037bbcc38162346534e73d8 (patch)
treefe9dddc3c81614db77bb4c6aee7f020312a81038
parentcf45cbf6dd918b9e5af40f88cc948e9337c72fef (diff)
evas_object_box: fix invalidator
the iteration over the content of the box did never cleanup the children pointer, which resulted in buggy behavior. This fixes test suite crashes with freeq debugging on. Differential Revision: https://phab.enlightenment.org/D11123
-rw-r--r--src/lib/evas/canvas/evas_object_box.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/lib/evas/canvas/evas_object_box.c b/src/lib/evas/canvas/evas_object_box.c
index 7a7173eb25..7853ee3e10 100644
--- a/src/lib/evas/canvas/evas_object_box.c
+++ b/src/lib/evas/canvas/evas_object_box.c
@@ -412,18 +412,16 @@ _evas_box_efl_canvas_group_group_add(Eo *eo_obj, Evas_Object_Box_Data *priv)
412EOLIAN static void 412EOLIAN static void
413_evas_box_efl_canvas_group_group_del(Eo *o, Evas_Object_Box_Data *priv) 413_evas_box_efl_canvas_group_group_del(Eo *o, Evas_Object_Box_Data *priv)
414{ 414{
415 Eina_List *l; 415 while (priv->children)
416
417 l = priv->children;
418 while (l)
419 { 416 {
420 Evas_Object_Box_Option *opt = l->data; 417 Evas_Object_Box_Option *opt = eina_list_data_get(priv->children);
421 418
422 _evas_object_box_child_callbacks_unregister(opt->obj, o); 419 _evas_object_box_child_callbacks_unregister(opt->obj, o);
423 evas_obj_box_internal_option_free(o, opt); 420 evas_obj_box_internal_option_free(o, opt);
424 l = eina_list_remove_list(l, l); 421 priv->children = eina_list_remove_list(priv->children, priv->children);
425 } 422 }
426 423
424
427 if (priv->layout.data && priv->layout.free_data) 425 if (priv->layout.data && priv->layout.free_data)
428 priv->layout.free_data(priv->layout.data); 426 priv->layout.free_data(priv->layout.data);
429 427