From: Daniel Kolesa Date: Thu, 15 Mar 2018 23:09:43 +0000 (+0100) Subject: eolian: fix unit child management X-Git-Tag: upstream/1.21.0~1615 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=93e3bdc12aae7a140ed1c2de4b399d1616063027;p=platform%2Fupstream%2Fefl.git eolian: fix unit child management Also pass correct unit to validation for performance. --- diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 3b535dd..99ea949 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 48a2b20..f3fc255 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;