summaryrefslogtreecommitdiff
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
parentcd13b40f668bfbb86e9f7e9aec0ff86888ea43ca (diff)
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.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)
179 for ( ; *mro_itr ; mro_itr++) 179 for ( ; *mro_itr ; mro_itr++)
180 { 180 {
181 const Eo_Vtable *mro_vtable = &(*mro_itr)->vtable; 181 const Eo_Vtable *mro_vtable = &(*mro_itr)->vtable;
182 if ((*mro_itr) == klass)
183 continue;
182 for (int i = 0; i < mro_vtable->size; ++i) 184 for (int i = 0; i < mro_vtable->size; ++i)
183 { 185 {
184 if (mro_vtable->chain[i].funcs == vtable->chain[i].funcs) 186 if (mro_vtable->chain[i].funcs == vtable->chain[i].funcs)