From 60e51fccbe73d9b865c268f4aac51d6ad4771028 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Thu, 28 Feb 2019 13:26:59 +0900 Subject: [PATCH] edc_editor: don't access the danling edit object. --- src/lib/auto_comp.c | 21 ++++++++++++--------- src/lib/edc_editor.c | 8 ++++++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/lib/auto_comp.c b/src/lib/auto_comp.c index 46a89de..e69968c 100644 --- a/src/lib/auto_comp.c +++ b/src/lib/auto_comp.c @@ -897,15 +897,18 @@ autocomp_target_set(edit_data *ed) if (ad->ed) { entry = edit_entry_get(ad->ed); - evas_object_smart_callback_del(entry, "changed,user", entry_changed_cb); - evas_object_smart_callback_del(entry, "cursor,changed", - entry_cursor_changed_cb); - evas_object_smart_callback_del(entry, "cursor,changed,manual", - entry_cursor_changed_manual_cb); - evas_object_smart_callback_del(entry, "unfocused", anchor_unfocused_cb); - evas_object_smart_callback_del(entry, "press", entry_press_cb); - evas_object_event_callback_del(entry, EVAS_CALLBACK_MOVE, - entry_move_cb); + if (entry) + { + evas_object_smart_callback_del(entry, "changed,user", entry_changed_cb); + evas_object_smart_callback_del(entry, "cursor,changed", + entry_cursor_changed_cb); + evas_object_smart_callback_del(entry, "cursor,changed,manual", + entry_cursor_changed_manual_cb); + evas_object_smart_callback_del(entry, "unfocused", anchor_unfocused_cb); + evas_object_smart_callback_del(entry, "press", entry_press_cb); + evas_object_event_callback_del(entry, EVAS_CALLBACK_MOVE, + entry_move_cb); + } evas_object_del(ad->anchor); ad->anchor = NULL; ad->ed = NULL; diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index ee15a94..4fc888b 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -1480,6 +1480,13 @@ edit_cur_indent_depth_get(edit_data *ed) return indent_space_get(syntax_indent_data_get(ed->sh)); } +static void +edit_obj_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + edit_data *ed = data; + ed->en_edit = NULL; +} + edit_data * edit_init(Enventor_Object *enventor, Enventor_Item *it) { @@ -1571,6 +1578,7 @@ edit_init(Enventor_Object *enventor, Enventor_Item *it) edit_selection_cleared_cb, ed); evas_object_smart_callback_add(en_edit, "selection,start", edit_selection_start_cb, ed); + evas_object_event_callback_add(en_edit, EVAS_CALLBACK_DEL, edit_obj_del_cb, ed); evas_object_size_hint_weight_set(en_edit, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(en_edit, EVAS_HINT_FILL, EVAS_HINT_FILL);