remove del callbacks for xkbswitch list config objects

==10821== Invalid write of size 8
==10821==    at 0x28168A4B: _list_del (e_mod_config.c:455)
==10821==    by 0x78F6C78: _eo_evas_object_cb (evas_callbacks.c:192)
==10821==    by 0xE597F3A: _event_callback_call (eo_base_class.c:1422)
==10821==    by 0xE598161: _efl_object_event_callback_legacy_call (eo_base_class.c:1491)
==10821==    by 0xE59BC8F: efl_event_callback_legacy_call (efl_object.eo.c:146)
==10821==    by 0x7932A4D: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1012)
==10821==    by 0xE59BC8F: efl_event_callback_legacy_call (efl_object.eo.c:146)
==10821==    by 0x78F7537: evas_object_event_callback_call (evas_callbacks.c:364)
==10821==    by 0x7932C9B: _efl_canvas_object_efl_object_destructor (evas_object_main.c:1042)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0x5033E3F: _elm_interface_atspi_accessible_efl_object_destructor (elm_interface_atspi_accessible.c:609)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0x511E8DB: _elm_widget_efl_object_destructor (elm_widget.c:5866)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0xE58D31E: _efl_del_internal (eo_private.h:248)
==10821==    by 0xE58D6E5: _efl_unref_internal (eo_private.h:323)
==10821==    by 0xE58F9CA: _efl_object_call_end (eo.c:620)
==10821==    by 0xE599203: efl_del (efl_object.eo.c:18)
==10821==    by 0x7932565: evas_object_del (evas_object_main.c:902)
==10821==    by 0x510EC99: _elm_widget_efl_canvas_group_group_del (elm_widget.c:461)
==10821==    by 0x7948FE8: efl_canvas_group_del (efl_canvas_group.eo.c:36)
==10821==    by 0x505ACC0: _elm_layout_efl_canvas_group_group_del (elm_layout.c:813)
==10821==    by 0x7948FE8: efl_canvas_group_del (efl_canvas_group.eo.c:36)
==10821==    by 0x7946ED7: evas_object_smart_del (evas_object_smart.c:1076)
==10821==    by 0x7933114: _efl_canvas_object_efl_object_destructor (evas_object_main.c:1095)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0x5033E3F: _elm_interface_atspi_accessible_efl_object_destructor (elm_interface_atspi_accessible.c:609)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0x511E8DB: _elm_widget_efl_object_destructor (elm_widget.c:5866)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0xE58D31E: _efl_del_internal (eo_private.h:248)
==10821==    by 0xE58D6E5: _efl_unref_internal (eo_private.h:323)
==10821==    by 0xE58F9CA: _efl_object_call_end (eo.c:620)
==10821==    by 0xE599203: efl_del (efl_object.eo.c:18)
==10821==    by 0x7932565: evas_object_del (evas_object_main.c:902)
==10821==    by 0x510EC99: _elm_widget_efl_canvas_group_group_del (elm_widget.c:461)
==10821==    by 0x7948FE8: efl_canvas_group_del (efl_canvas_group.eo.c:36)
==10821==    by 0x4F4D549: _elm_box_efl_canvas_group_group_del (elm_box.c:412)
==10821==    by 0x7948FE8: efl_canvas_group_del (efl_canvas_group.eo.c:36)
==10821==    by 0x7946ED7: evas_object_smart_del (evas_object_smart.c:1076)
==10821==    by 0x7933114: _efl_canvas_object_efl_object_destructor (evas_object_main.c:1095)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0x5033E3F: _elm_interface_atspi_accessible_efl_object_destructor (elm_interface_atspi_accessible.c:609)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0x511E8DB: _elm_widget_efl_object_destructor (elm_widget.c:5866)
==10821==    by 0xE599F2A: efl_destructor (efl_object.eo.c:58)
==10821==    by 0xE58D31E: _efl_del_internal (eo_private.h:248)
==10821==    by 0xE58D6E5: _efl_unref_internal (eo_private.h:323)
==10821==    by 0xE58F9CA: _efl_object_call_end (eo.c:620)
==10821==    by 0xE599203: efl_del (efl_object.eo.c:18)
==10821==  Address 0x2c731708 is 184 bytes inside a block of size 456 free'd
==10821==    at 0x4C2ED4A: free (vg_replace_malloc.c:530)
==10821==    by 0x28165F69: _free_data (e_mod_config.c:249)
==10821==    by 0x49D92E: _e_config_dialog_free (e_config_dialog.c:156)
==10821==    by 0x546D2F: e_object_free (e_object.c:119)
==10821==    by 0x546F4B: e_object_unref (e_object.c:152)
==10821==    by 0x546B5E: e_object_del (e_object.c:60)
==10821==    by 0x49E233: _e_config_dialog_cb_dialog_del (e_config_dialog.c:333)
==10821==    by 0x546B34: e_object_del (e_object.c:58)
==10821==    by 0x4AA23C: _e_dialog_cb_key_down (e_dialog.c:357)
==10821==    by 0x78F6CB4: _eo_evas_object_cb (evas_callbacks.c:199)
==10821==    by 0xE597F3A: _event_callback_call (eo_base_class.c:1422)
==10821==    by 0xE598161: _efl_object_event_callback_legacy_call (eo_base_class.c:1491)
==10821==    by 0xE59BC8F: efl_event_callback_legacy_call (efl_object.eo.c:146)
==10821==    by 0x7932A4D: _efl_canvas_object_efl_object_event_callback_legacy_call (evas_object_main.c:1012)
==10821==    by 0xE59BC8F: efl_event_callback_legacy_call (efl_object.eo.c:146)
==10821==    by 0x78F7537: evas_object_event_callback_call (evas_callbacks.c:364)
==10821==    by 0x7906AD8: _canvas_event_feed_key_down_internal (evas_events.c:3112)
==10821==    by 0x7909281: _evas_canvas_event_key_cb (evas_events.c:3960)
==10821==    by 0xE597E57: _event_callback_call (eo_base_class.c:1399)
==10821==    by 0xE598161: _efl_object_event_callback_legacy_call (eo_base_class.c:1491)
==10821==    by 0xE59BC8F: efl_event_callback_legacy_call (efl_object.eo.c:146)
==10821==    by 0x65FDE63: _direct_key_updown_cb (ecore_evas.c:4664)
==10821==    by 0x65FDFC9: _ecore_evas_input_direct_cb (ecore_evas.c:4692)
==10821==    by 0x6813D6E: _ecore_event_evas_key (ecore_input_evas.c:429)
==10821==    by 0x6814A8D: ecore_event_evas_key_down (ecore_input_evas.c:707)
==10821==    by 0xDBD7AF6: _ecore_call_handler_cb (ecore_private.h:317)
==10821==    by 0xDBD8A85: _ecore_event_call (ecore_events.c:518)
==10821==    by 0xDBE1AEF: _ecore_main_loop_iterate_internal (ecore_main.c:2380)
==10821==    by 0xDBDF89D: ecore_main_loop_begin (ecore_main.c:1290)
==10821==    by 0x441BB4: main (e_main.c:1093)
==10821==  Block was alloc'd at
==10821==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
==10821==    by 0x28165773: _create_data (e_mod_config.c:182)
==10821==    by 0x49DBBC: _e_config_dialog_go (e_config_dialog.c:204)
==10821==    by 0x49D4E9: e_config_dialog_new (e_config_dialog.c:80)
==10821==    by 0x28165625: _xkb_cfg_dialog (e_mod_config.c:141)
==10821==    by 0x49EACF: e_configure_registry_call (e_configure.c:72)
==10821==    by 0x314400C3: _e_mod_run_cb (e_mod_main.c:165)
==10821==    by 0x53DA23: _e_menu_active_call (e_menu.c:2045)
==10821==    by 0x53F7CC: _e_menu_cb_mouse_up (e_menu.c:2778)
==10821==    by 0xDBD7AF6: _ecore_call_handler_cb (ecore_private.h:317)
==10821==    by 0xDBD8A85: _ecore_event_call (ecore_events.c:518)
==10821==    by 0xDBE1AEF: _ecore_main_loop_iterate_internal (ecore_main.c:2380)
==10821==    by 0xDBDF89D: ecore_main_loop_begin (ecore_main.c:1290)
==10821==    by 0x441BB4: main (e_main.c:1093)
This commit is contained in:
Mike Blumenkrantz 2017-02-10 17:23:43 -05:00
parent 97f1c83712
commit 0266601a29
1 changed files with 17 additions and 10 deletions

View File

@ -230,6 +230,16 @@ _create_data(E_Config_Dialog *cfd)
return cfdata;
}
static void
_list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Evas_Object **o;
o = data;
*o = NULL;
}
static void
_free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
{
@ -237,6 +247,13 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
_xkb.cfd = NULL;
if (cfdata->compose_list)
evas_object_event_callback_del(cfdata->compose_list, EVAS_CALLBACK_DEL, _list_del);
if (cfdata->lv3_list)
evas_object_event_callback_del(cfdata->lv3_list, EVAS_CALLBACK_DEL, _list_del);
if (cfdata->switch_list)
evas_object_event_callback_del(cfdata->switch_list, EVAS_CALLBACK_DEL, _list_del);
EINA_LIST_FREE(cfdata->cfg_layouts, cl)
{
eina_stringshare_del(cl->name);
@ -445,16 +462,6 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
return 1;
}
static void
_list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
Evas_Object **o;
o = data;
*o = NULL;
}
static void
_option_del(void *data, Evas_Object *obj, void *event EINA_UNUSED)
{