diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 9ad7fd9874..85ba8c2320 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -2245,22 +2245,19 @@ parse_chunk(Eo_Lexer *ls, Eina_Bool eot) Eolian_Unit * eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot) { - Eolian_Unit *ret = NULL; - if (eina_hash_find(parent->state->parsed, filename)) - { - const char *fsl = strrchr(filename, '/'); - const char *bsl = strrchr(filename, '\\'); - const char *fname = NULL; - if (fsl || bsl) - fname = eina_stringshare_add((fsl > bsl) ? (fsl + 1) : (bsl + 1)); - if (fname) - { - ret = eina_hash_find(parent->state->units, fname); - eina_stringshare_del(fname); - return ret; - } - return NULL; - } + const char *fsl = strrchr(filename, '/'); + const char *bsl = strrchr(filename, '\\'); + const char *fname = NULL; + if (fsl || bsl) + fname = eina_stringshare_add((fsl > bsl) ? (fsl + 1) : (bsl + 1)); + else + fname = eina_stringshare_add(filename); + + Eolian_Unit *ret = eina_hash_find(parent->state->units, fname); + eina_stringshare_del(fname); + + if (ret) + return ret; Eo_Lexer *ls = eo_lexer_new(parent->state, filename); if (!ls) @@ -2292,7 +2289,6 @@ eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot done: ret = ls->unit; - eina_hash_set(ls->state->parsed, filename, (void *)EINA_TRUE); eina_hash_add(parent->children, filename, ret); eo_lexer_free(ls); diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index 93aba59d38..5071c0562f 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -550,9 +550,7 @@ eolian_new(void) state->filenames_eo = eina_hash_string_small_new(free); state->filenames_eot = eina_hash_string_small_new(free); - state->parsed = eina_hash_string_small_new(NULL); - state->defer = eina_hash_string_small_new(NULL); - + state->defer = eina_hash_string_small_new(NULL); state->units = eina_hash_stringshared_new(EINA_FREE_CB(database_unit_del)); state->classes_f = eina_hash_stringshared_new(NULL); @@ -577,9 +575,7 @@ eolian_free(Eolian *state) eina_hash_free(state->filenames_eo); eina_hash_free(state->filenames_eot); - eina_hash_free(state->parsed); eina_hash_free(state->defer); - eina_hash_free(state->units); eina_hash_free(state->classes_f); diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index a26b4af560..5811e93cad 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -51,9 +51,7 @@ struct _Eolian Eina_Hash *filenames_eo; /* filename to full path mapping */ Eina_Hash *filenames_eot; - Eina_Hash *parsed; Eina_Hash *defer; - Eina_Hash *units; Eina_Hash *classes_f;