lorddrew pushed a commit to branch master.

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

commit c37226ef5e8e6e5c915d44583f88d03c3df39c81
Author: Andrii Kroitor <[email protected]>
Date:   Fri Nov 17 10:15:21 2017 +0200

    elm_genlist: fix rare segfault
    
    Conditions:
    - style is "double_label"
    - the is some content for items (i.e elm_label)
    - elm_genlist_filter set was once called after genlist creation with
      NULL data
    - label_get callback uses elm_genlist_item_prev_get on its current item
    - at least one item is added as a sub-item
    - ~2 blocks of items are added afterwards
    - items are added quickly while holding 'enter' on an elm_button
    
    @fix
---
 src/lib/elementary/elm_genlist.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 3128783609..99cda24b56 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -7691,7 +7691,8 @@ _filter_item_internal(Elm_Gen_Item *it)
                 WIDGET(it), sd->filter_data)))
           {
              it->hide = EINA_TRUE;
-             it->item->block->changed = EINA_TRUE;
+             if (it->item->block)
+               it->item->block->changed = EINA_TRUE;
           }
         else
           sd->filtered_count++;
@@ -7722,7 +7723,8 @@ _item_filtered_get(Elm_Gen_Item *it)
           }
 
         _filter_item_internal(it);
-        it->item->block->changed = EINA_TRUE;
+        if (it->item->block)
+          it->item->block->changed = EINA_TRUE;
         ELM_SAFE_FREE(sd->calc_job, ecore_job_del);
         sd->calc_job = ecore_job_add(_calc_job, sd->obj);
    }

-- 


Reply via email to