summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaeun Choi <jaeun12.choi@samsung.com>2014-03-03 18:10:47 +0900
committerDaniel Juyung Seo <seojuyung2@gmail.com>2014-03-03 18:12:34 +0900
commitec8ef6518d483207a5e4a065f63fe7277cb92829 (patch)
tree907afb26f51930fea572e978771b810076a8ea0e
parente935bad365e7e7056b57412ee84f052fce2a3dc4 (diff)
downloadelementary-ec8ef6518d483207a5e4a065f63fe7277cb92829.tar.gz
diskselector: Fix segmentation fault
Summary: The code was missing null check of sd->items list. If the deleted item is the only item of the list, sd->items becomes empty after removing it. In that case, sd->selected_item should be set as NULL. @fix Fixes T988 Test Plan: execute diskselector_example_02 > click "Delete item" button 3 times Reviewers: raster, seoz Reviewed By: seoz CC: seoz Maniphest Tasks: T988 Differential Revision: https://phab.enlightenment.org/D595
-rw-r--r--src/lib/elm_diskselector.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c
index cf3c097e2..8a00fffc1 100644
--- a/src/lib/elm_diskselector.c
+++ b/src/lib/elm_diskselector.c
@@ -357,14 +357,19 @@ _item_del_pre_hook(Elm_Object_Item *item)
if (sd->selected_item == it)
{
- dit = (Elm_Diskselector_Item *)eina_list_nth(sd->items, 0);
+ if (sd->items)
+ {
+ dit = (Elm_Diskselector_Item *)eina_list_nth(sd->items, 0);
- if (dit != it)
- sd->selected_item = dit;
- else
- sd->selected_item = eina_list_nth(sd->items, 1);
+ if (dit != it)
+ sd->selected_item = dit;
+ else
+ sd->selected_item = eina_list_nth(sd->items, 1);
- _selected_item_indicate(sd->selected_item);
+ _selected_item_indicate(sd->selected_item);
+ }
+ else
+ sd->selected_item = NULL;
}
_item_del(it);