diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2020-03-24 13:55:19 +0100 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2020-03-24 20:41:17 +0100 |
commit | 9738a759392d1c78ed469bbed40139a6c6d12a64 (patch) | |
tree | 80d070d48ef3a0a9a8e69a06cb9e217a1bb3e82f | |
parent | cd13b40f668bfbb86e9f7e9aec0ff86888ea43ca (diff) | |
download | efl-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
-rw-r--r-- | src/lib/eo/eo.c | 2 |
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) |