summaryrefslogtreecommitdiff
path: root/src/lib/eo
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2020-03-24 13:55:19 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2020-03-24 20:41:17 +0100
commit9738a759392d1c78ed469bbed40139a6c6d12a64 (patch)
tree80d070d48ef3a0a9a8e69a06cb9e217a1bb3e82f /src/lib/eo
parentcd13b40f668bfbb86e9f7e9aec0ff86888ea43ca (diff)
downloadefl-9738a759392d1c78ed469bbed40139a6c6d12a64.tar.gz
eo: do not null out the vtable chain of your own classes
the free methods here accidently took the top of the mro into account, which is the class itself, which NULLed out the wrong classes. After this, we are finally freeing the mixin vtables. Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D11573
Diffstat (limited to 'src/lib/eo')
-rw-r--r--src/lib/eo/eo.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 5a781d3d86..18190cddef 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -179,6 +179,8 @@ _vtable_mro_free(const _Efl_Class *klass)
for ( ; *mro_itr ; mro_itr++)
{
const Eo_Vtable *mro_vtable = &(*mro_itr)->vtable;
+ if ((*mro_itr) == klass)
+ continue;
for (int i = 0; i < mro_vtable->size; ++i)
{
if (mro_vtable->chain[i].funcs == vtable->chain[i].funcs)