cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=168849e8a08966ecc284e28f64126a3a85965965

commit 168849e8a08966ecc284e28f64126a3a85965965
Author: Cedric BAIL <[email protected]>
Date:   Tue Mar 20 13:20:26 2018 -0400

    eo: use unref instead of del when constructor fails without parent
    
    Signed-off-by: Mike Blumenkrantz <[email protected]>
---
 src/lib/eo/eo.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 4e6b0912e9..0fb5891d33 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -927,7 +927,8 @@ ok_nomatch:
         EO_OBJ_POINTER_GOTO_PROXY(eo_id, new_obj, err_newid);
         /* We have two refs at this point. */
         _efl_unref(obj);
-        efl_del((Eo *)obj->header.id);
+        if (parent_id) efl_del((Eo *) obj->header.id);
+        else _efl_unref(obj);
         _efl_ref(new_obj);
         EO_OBJ_DONE(eo_id);
      }
@@ -938,7 +939,8 @@ err_noid:
        file, line, klass->desc->name);
    /* We have two refs at this point. */
    _efl_unref(obj);
-   efl_del((Eo *) obj->header.id);
+   if (parent_id) efl_del((Eo *) obj->header.id);
+   else _efl_unref(obj);
 err_newid:
    if (parent_id) EO_OBJ_DONE(parent_id);
    return NULL;
@@ -989,7 +991,8 @@ err_condtor:
      }
 cleanup:
    _efl_unref(obj);
-   efl_del((Eo *) obj->header.id);
+   if (efl_parent_get(eo_id)) efl_del((Eo *) obj->header.id);
+   else _efl_unref(obj);
    EO_OBJ_DONE(eo_id);
    return NULL;
 }

-- 


Reply via email to