bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9738a759392d1c78ed469bbed40139a6c6d12a64

commit 9738a759392d1c78ed469bbed40139a6c6d12a64
Author: Marcel Hollerbach <[email protected]>
Date:   Tue Mar 24 13:55:19 2020 +0100

    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 <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D11573
---
 src/lib/eo/eo.c | 2 ++
 1 file changed, 2 insertions(+)

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)

-- 


Reply via email to