diff options
author | Daniel Kolesa <d.kolesa@samsung.com> | 2019-01-25 14:11:25 +0100 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@samsung.com> | 2019-01-25 14:13:16 +0100 |
commit | ca82c27d18db49421c63e58862306313ce36c75a (patch) | |
tree | 778f49a8f515a0e245925b15d31c5967d4742fc5 /src/lib/eolian/database_validate.c | |
parent | 213a842d52bc73a89b55a3efca5a7ba870776918 (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.c | 5 |
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); |