diff options
author | Andrii Kroitor <an.kroitor@samsung.com> | 2017-11-17 10:15:21 +0200 |
---|---|---|
committer | Andrii Kroitor <an.kroitor@samsung.com> | 2017-11-17 10:16:41 +0200 |
commit | c37226ef5e8e6e5c915d44583f88d03c3df39c81 (patch) | |
tree | 0fdebbb8dbcfab16c324367587f08541e68aac93 | |
parent | 35f3019a6dffe8ae3c4f00e041966cebbc1d2049 (diff) | |
download | efl-c37226ef5e8e6e5c915d44583f88d03c3df39c81.tar.gz |
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
-rw-r--r-- | src/lib/elementary/elm_genlist.c | 6 |
1 files 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); } |