q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fed326a3ef853f3c027664b16a4ff51b8d65bfd4
commit fed326a3ef853f3c027664b16a4ff51b8d65bfd4 Author: Daniel Kolesa <[email protected]> Date: Fri Mar 16 00:09:43 2018 +0100 eolian: fix unit child management Also pass correct unit to validation for performance. --- src/lib/eolian/eo_parser.c | 10 ++++++---- src/lib/eolian/eolian_database.c | 5 +---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 3b535ddcbc..99ea9499e3 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -2197,12 +2197,12 @@ eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot fname = eina_stringshare_add(filename); Eolian_Unit *ret = eina_hash_find(parent->state->units, fname); - eina_stringshare_del(fname); if (ret) { - if ((parent != ret) && !eina_hash_find(parent->children, filename)) - eina_hash_add(parent->children, filename, ret); + if ((parent != ret) && !eina_hash_find(parent->children, fname)) + eina_hash_add(parent->children, fname, ret); + eina_stringshare_del(fname); return ret; } @@ -2235,12 +2235,14 @@ eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot done: ret = ls->unit; - eina_hash_add(parent->children, filename, ret); + eina_hash_add(parent->children, fname, ret); + eina_stringshare_del(fname); eo_lexer_free(ls); return ret; error: + eina_stringshare_del(fname); eo_lexer_free(ls); return NULL; } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index 48a2b20a98..f3fc255ad8 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -806,8 +806,7 @@ eolian_state_file_parse(Eolian_State *state, const char *filepath) if (!_parse_deferred(ret)) return NULL; _merge_units(ret); - /* FIXME: pass unit properly */ - if (!database_validate(state, &state->unit)) + if (!database_validate(state, ret)) return NULL; return &state->unit; } @@ -840,7 +839,6 @@ eolian_state_all_eot_files_parse(Eolian_State *state) eina_hash_foreach(state->filenames_eot, _tfile_parse, &pd); - /* FIXME: pass unit properly */ if (pd.ret && !database_validate(state, &state->unit)) return EINA_FALSE; @@ -869,7 +867,6 @@ eolian_state_all_eo_files_parse(Eolian_State *state) eina_hash_foreach(state->filenames_eo, _file_parse, &pd); - /* FIXME: pass unit properly */ if (pd.ret && !database_validate(state, &state->unit)) return EINA_FALSE; --
