raster pushed a commit to branch master.

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

commit ba8a47a316cf8473b16e3f2848f48e574fd7222f
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sun Jun 24 11:56:52 2018 +0900

    elm focus - fix focus composition prepare to not seg by unsafe list mods
    
    efl_ui_focus_composition_prepare() methods in 2 widgets were modifying
    the list (removing items) as they walked, using unsafe walking macros.
    fix - use the safe variants.
---
 src/lib/elementary/elm_grid.c  | 4 ++--
 src/lib/elementary/elm_table.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_grid.c b/src/lib/elementary/elm_grid.c
index f1d5cd04d5..7443047912 100644
--- a/src/lib/elementary/elm_grid.c
+++ b/src/lib/elementary/elm_grid.c
@@ -17,13 +17,13 @@
 static void
 _elm_grid_efl_ui_focus_composition_prepare(Eo *obj, void *pd EINA_UNUSED)
 {
-   Eina_List *l;
+   Eina_List *l, *ll;
    Efl_Ui_Widget *elem;
 
    Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, EFL_UI_WIDGET_CLASS);
    Eina_List *order = evas_object_grid_children_get(wpd->resize_obj);
 
-   EINA_LIST_FOREACH(order, l, elem)
+   EINA_LIST_FOREACH_SAFE(order, l, ll, elem)
      {
         if (!efl_isa(elem, EFL_UI_WIDGET_CLASS))
           order = eina_list_remove(order, elem);
diff --git a/src/lib/elementary/elm_table.c b/src/lib/elementary/elm_table.c
index dfe7cf2bb7..5cab078534 100644
--- a/src/lib/elementary/elm_table.c
+++ b/src/lib/elementary/elm_table.c
@@ -18,13 +18,13 @@
 static void
 _elm_table_efl_ui_focus_composition_prepare(Eo *obj, void *pd EINA_UNUSED)
 {
-   Eina_List *l;
+   Eina_List *l, *ll;
    Efl_Ui_Widget *elem;
 
    Elm_Widget_Smart_Data *wpd = efl_data_scope_get(obj, EFL_UI_WIDGET_CLASS);
    Eina_List *order = evas_object_table_children_get(wpd->resize_obj);
 
-   EINA_LIST_FOREACH(order, l, elem)
+   EINA_LIST_FOREACH_SAFE(order, l, ll, elem)
      {
         if (!efl_isa(elem, EFL_UI_WIDGET_CLASS))
           order = eina_list_remove(order, elem);

-- 


Reply via email to