summaryrefslogtreecommitdiff
path: root/src/lib/eolian/database_validate.c
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@samsung.com>2019-01-25 14:11:25 +0100
committerDaniel Kolesa <d.kolesa@samsung.com>2019-01-25 14:13:16 +0100
commitca82c27d18db49421c63e58862306313ce36c75a (patch)
tree778f49a8f515a0e245925b15d31c5967d4742fc5 /src/lib/eolian/database_validate.c
parent213a842d52bc73a89b55a3efca5a7ba870776918 (diff)
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.
Diffstat (limited to '')
-rw-r--r--src/lib/eolian/database_validate.c5
1 files changed, 5 insertions, 0 deletions
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)
1309 Eina_Hash *errh = eina_hash_pointer_new(NULL); 1309 Eina_Hash *errh = eina_hash_pointer_new(NULL);
1310 EINA_ITERATOR_FOREACH(iter, cl) 1310 EINA_ITERATOR_FOREACH(iter, cl)
1311 { 1311 {
1312 /* clear, because otherwise if unrelated classes A and B both
1313 * had interface C in extensions list without implementing it,
1314 * it would only get printed for A
1315 */
1316 eina_hash_free_buckets(errh);
1312 if (!_db_fill_inherits(&vals, cl, fhash, errh)) 1317 if (!_db_fill_inherits(&vals, cl, fhash, errh))
1313 { 1318 {
1314 eina_hash_free(errh); 1319 eina_hash_free(errh);