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;
 }

-- 


Reply via email to