From 69dfeb032381201c18657f5a70f9d12c8b57f71b Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 27 May 2020 15:34:24 +0900 Subject: [PATCH] efl gfx_path: fix memory leak. his reverts commit 38be95b0b6fd93df01636ae0a7c974b32ed694a1. The reverting patch blocks efl_canvas_vg_shape triggers efl_canvas_vg_node destructor. That occurs massive leaks among the all nodes in the vector tree. To fix the origin issue, we must reset path explicitly in the derived class. @fix --- src/lib/efl/interfaces/efl_gfx_path.c | 7 ------- src/lib/efl/interfaces/efl_gfx_path.eo | 5 +---- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/lib/efl/interfaces/efl_gfx_path.c b/src/lib/efl/interfaces/efl_gfx_path.c index 9852de1498..18a1733da0 100644 --- a/src/lib/efl/interfaces/efl_gfx_path.c +++ b/src/lib/efl/interfaces/efl_gfx_path.c @@ -1535,11 +1535,4 @@ _efl_gfx_path_copy_from(Eo *obj, Efl_Gfx_Path_Data *pd, const Eo *dup_from) _efl_gfx_path_path_set(obj, pd, from->commands, from->points); } -EOLIAN static void -_efl_gfx_path_efl_object_destructor(Eo *obj, Efl_Gfx_Path_Data *pd) -{ - _efl_gfx_path_reset(obj, pd); - efl_destructor(efl_super(obj, EFL_GFX_PATH_MIXIN)); -} - #include "interfaces/efl_gfx_path.eo.c" diff --git a/src/lib/efl/interfaces/efl_gfx_path.eo b/src/lib/efl/interfaces/efl_gfx_path.eo index 42a44607ac..3f47497da9 100644 --- a/src/lib/efl/interfaces/efl_gfx_path.eo +++ b/src/lib/efl/interfaces/efl_gfx_path.eo @@ -1,7 +1,7 @@ import eina_types; import efl_gfx_types; -mixin @beta Efl.Gfx.Path requires Efl.Object +mixin @beta Efl.Gfx.Path { [[EFL graphics path object interface]] methods { @@ -267,7 +267,4 @@ mixin @beta Efl.Gfx.Path requires Efl.Object ]] } } - implements { - Efl.Object.destructor; - } }