From b92efdc8bd49f31b0b07f09cd367066692515436 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Thu, 14 Jun 2018 14:23:28 -0500 Subject: [PATCH] evas: make objects again delete correctly Summary: what here was done was fundamentally wrong, deleting the pd->object field of a evas object after a efl_del / evas_object_del is completly wrong. evas object lifetimes are controller with eo_manual_free, this means, they are still alive, even after you called evas_object_del on them. removing pd->object results in eo_menual_free calls to NULL objects and leaking the object carrying the private data. Overall, breaking this pd->object field and unsetting it is a very bad idea, as its the only way that evas cleansup the object correctly. This brings down the number of ui related leaked objects on shutdowns to 0. (YEY :)) This also fixes weird error messages on app shutdown. fixes T6964 Reviewers: devilhorns, zmike Reviewed By: zmike Subscribers: cedric, #committers, zmike Tags: #efl Maniphest Tasks: T6964 Differential Revision: https://phab.enlightenment.org/D6290 --- src/lib/evas/include/evas_inline.x | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/evas/include/evas_inline.x b/src/lib/evas/include/evas_inline.x index b3f1ae6..7a2af7d 100644 --- a/src/lib/evas/include/evas_inline.x +++ b/src/lib/evas/include/evas_inline.x @@ -361,7 +361,6 @@ _evas_wrap_del(Evas_Object **eo, Evas_Object_Protected_Data *pd) if (!*eo) return ; if (pd && pd->legacy.ctor) evas_object_del(*eo); else efl_del(*eo); - *eo = NULL; } #define _EVAS_COLOR_CLAMP(x, y) do { \ -- 2.7.4