elm/genlist: check for item invalidation after setting item focus on click
authorMike Blumenkrantz <zmike@samsung.com>
Tue, 21 Aug 2018 14:26:37 +0000 (10:26 -0400)
committerWoochanlee <wc0917.lee@samsung.com>
Thu, 23 Aug 2018 06:43:07 +0000 (15:43 +0900)
Summary:
if the item is deleted during a focus callback then the remainder of this function
must be skipped in order to avoid crashing when attempting to access deallocated
memory

ref T7292

Reviewers: SanghyeonLee

Reviewed By: SanghyeonLee

Subscribers: cedric, #reviewers, #committers

Tags: #efl_widgets

Maniphest Tasks: T7292

Differential Revision: https://phab.enlightenment.org/D6831

src/lib/elementary/elm_genlist.c

index ffe72da..c89e49c 100644 (file)
@@ -5390,6 +5390,8 @@ _item_mouse_up_cb(void *data,
    if (sd->focused_item != EO_OBJ(it))
      elm_object_item_focus_set(EO_OBJ(it), EINA_TRUE);
 
+   if (efl_invalidated_get(EO_OBJ(it))) goto deleted;
+
    if (sd->multi &&
        ((sd->multi_select_mode != ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL) ||
         (evas_key_modifier_is_set(ev->modifiers, "Control"))))