summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrii Kroitor <an.kroitor@samsung.com>2017-11-17 10:15:21 +0200
committerAndrii Kroitor <an.kroitor@samsung.com>2017-11-17 10:16:41 +0200
commitc37226ef5e8e6e5c915d44583f88d03c3df39c81 (patch)
tree0fdebbb8dbcfab16c324367587f08541e68aac93
parent35f3019a6dffe8ae3c4f00e041966cebbc1d2049 (diff)
downloadefl-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.c6
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);
}