jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=796b1dd56684e5acf606c1f6f37edd61c9c47dbf

commit 796b1dd56684e5acf606c1f6f37edd61c9c47dbf
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Fri Dec 15 19:08:59 2017 +0900

    ecore: Fix legacy message handlers destruction
---
 src/lib/ecore/ecore_event_message_handler.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore/ecore_event_message_handler.c 
b/src/lib/ecore/ecore_event_message_handler.c
index 3879c3c78e..9a6e03e006 100644
--- a/src/lib/ecore/ecore_event_message_handler.c
+++ b/src/lib/ecore/ecore_event_message_handler.c
@@ -171,6 +171,12 @@ _ecore_event_message_handler_handler_del(Eo *obj 
EINA_UNUSED, Ecore_Event_Messag
    data = h->data;
    if (pd->handlers_walking > 0)
      {
+        if (h->to_add)
+          {
+             h->to_add = EINA_FALSE;
+             pd->handlers_add = eina_list_remove(pd->handlers_add, h);
+          }
+
         h->delete_me = EINA_TRUE;
         pd->handlers_delete = eina_list_append(pd->handlers_delete, h);
      }
@@ -284,9 +290,14 @@ _ecore_event_message_handler_efl_object_destructor(Eo 
*obj, Ecore_Event_Message_
           {
              free(h);
           }
-        for (i = 0; i < pd->event_type_count; i++)
+        for (i = 0; i <= pd->event_type_count; i++)
           {
-             EINA_INLIST_FREE(pd->handlers[i], h) free(h);
+             EINA_INLIST_FREE(pd->handlers[i], h)
+               {
+                  pd->handlers[i] = eina_inlist_remove(pd->handlers[i],
+                                                       EINA_INLIST_GET(h));
+                  free(h);
+               }
           }
         free(pd->handlers);
         pd->handlers = NULL;

-- 


Reply via email to