q66 pushed a commit to branch master.

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

commit ca82c27d18db49421c63e58862306313ce36c75a
Author: Daniel Kolesa <[email protected]>
Date:   Fri Jan 25 14:11:25 2019 +0100

    eolian: clear the unimplemented implement set for each tree
    
    We keep a hash tracking implements that were already errored on
    so that we don't print some errors multiple times. The problem is
    that it wasn't getting cleared when switching to a new inheritance
    tree so errors from an interface implemented in multiple distinct
    inheritance trees would only get printed once.
---
 src/lib/eolian/database_validate.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/lib/eolian/database_validate.c 
b/src/lib/eolian/database_validate.c
index 240a0f6536..9b7c2af899 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -1309,6 +1309,11 @@ database_validate(const Eolian_Unit *src)
    Eina_Hash *errh = eina_hash_pointer_new(NULL);
    EINA_ITERATOR_FOREACH(iter, cl)
      {
+        /* clear, because otherwise if unrelated classes A and B both
+         * had interface C in extensions list without implementing it,
+         * it would only get printed for A
+         */
+        eina_hash_free_buckets(errh);
         if (!_db_fill_inherits(&vals, cl, fhash, errh))
           {
              eina_hash_free(errh);

-- 


Reply via email to