rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=a227b33c3c64bd13c69e3e79f168a4c62be9deca
commit a227b33c3c64bd13c69e3e79f168a4c62be9deca Author: Andrii Kroitor <an.kroi...@samsung.com> Date: Thu Nov 19 17:15:30 2015 +0200 editor: fix possible memory access violation --- src/bin/editor/editor_part.c | 17 ++++++++++++----- src/bin/editor/editor_states.c | 10 +++++++--- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/bin/editor/editor_part.c b/src/bin/editor/editor_part.c index 6bc8947..ff24481 100644 --- a/src/bin/editor/editor_part.c +++ b/src/bin/editor/editor_part.c @@ -494,8 +494,6 @@ editor_part_item_del(Evas_Object *edit_object, Change *change, Eina_Bool merge _ event_info.part_name = eina_stringshare_add(part_name); event_info.item_name = eina_stringshare_add(item_name); evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, (void *)&event_info); - eina_stringshare_del(event_info.part_name); - eina_stringshare_del(event_info.item_name); if (change) { source_group = edje_edit_part_item_source_get(edit_object, part_name, item_name); @@ -515,8 +513,14 @@ editor_part_item_del(Evas_Object *edit_object, Change *change, Eina_Bool merge _ change_diff_add(change, diff); } if (!edje_edit_part_item_del(edit_object, part_name, item_name)) - return false; + { + eina_stringshare_del(event_info.part_name); + eina_stringshare_del(event_info.item_name); + return false; + } _editor_project_changed(); + eina_stringshare_del(event_info.part_name); + eina_stringshare_del(event_info.item_name); return true; } @@ -633,7 +637,6 @@ editor_part_del(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNUS event_info = eina_stringshare_add(part_name); evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_PART_ITEM_DELETED, (void *)&event_info); - eina_stringshare_del(event_info); if (change) { @@ -652,7 +655,11 @@ editor_part_del(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNUS change_diff_add(change, diff); } if (!edje_edit_part_del(edit_object, part_name)) - return false; + { + eina_stringshare_del(event_info); + return false; + } + eina_stringshare_del(event_info); _editor_project_changed(); return true; } diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c index 152b41d..83e1fda 100644 --- a/src/bin/editor/editor_states.c +++ b/src/bin/editor/editor_states.c @@ -380,8 +380,6 @@ editor_state_del(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNU event_info.part_name = eina_stringshare_add(part_name); event_info.state_name = eina_stringshare_printf("%s %.2f", state_name, state_val); evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_STATE_DELETED, (void *)&event_info); - eina_stringshare_del(event_info.part_name); - eina_stringshare_del(event_info.state_name); if (change) { if (!editor_state_reset(edit_object, change, false, part_name, state_name, state_val)) @@ -401,7 +399,13 @@ editor_state_del(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNU change_diff_add(change, diff); } if (!edje_edit_state_del(edit_object, part_name, state_name, state_val)) - return false; + { + eina_stringshare_del(event_info.part_name); + eina_stringshare_del(event_info.state_name); + return false; + } _editor_project_changed(); + eina_stringshare_del(event_info.part_name); + eina_stringshare_del(event_info.state_name); return true; } --