zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1f1f0f75c0d3f51fb043319516ab6d43f1cb347d

commit 1f1f0f75c0d3f51fb043319516ab6d43f1cb347d
Author: Cedric BAIL <cedric.b...@free.fr>
Date:   Fri Oct 11 08:51:43 2019 -0400

    ecore_con: destructor are always called when finalize return NULL.
    
    Summary:
    This prevent crash and double free during an invalid Ecore_Con_Eet failure
    to initialize.
    
    Reviewers: zmike, bu5hm4n, segfaultxavi, stefan_schmidt
    
    Reviewed By: zmike
    
    Subscribers: #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D10362
---
 src/lib/ecore_con/ecore_con_eet.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/src/lib/ecore_con/ecore_con_eet.c 
b/src/lib/ecore_con/ecore_con_eet.c
index bd7aed5ec5..2bbbba7db4 100644
--- a/src/lib/ecore_con/ecore_con_eet.c
+++ b/src/lib/ecore_con/ecore_con_eet.c
@@ -693,14 +693,9 @@ _ecore_con_eet_base_efl_object_destructor(Eo *obj, 
Ecore_Con_Eet_Base_Data *pd)
 EOLIAN static Efl_Object *
 _ecore_con_eet_base_efl_object_finalize(Eo *obj, Ecore_Con_Eet_Base_Data *pd)
 {
-   if (pd->server) return efl_finalize(efl_super(obj, 
ECORE_CON_EET_BASE_CLASS));
+   if (!pd->server) return NULL;
 
-   eet_data_descriptor_free(pd->edd);
-   eet_data_descriptor_free(pd->matching);
-   eina_hash_free(pd->data_callbacks);
-   eina_hash_free(pd->raw_data_callbacks);
-
-   return NULL;
+   return efl_finalize(efl_super(obj, ECORE_CON_EET_BASE_CLASS));
 }
 
 EOLIAN static void

-- 


Reply via email to