if (eot && eina_hash_find(_parsedeots, filename))
return EINA_TRUE;
+ if (eot) eina_hash_set(_parsingeots, filename, (void *)EINA_TRUE);
+
ls = eo_lexer_new(filename);
if (!ls)
{
done:
if (eot)
- eina_hash_set(_parsedeots, filename, (void *)EINA_TRUE);
+ {
+ eina_hash_set(_parsedeots, filename, (void *)EINA_TRUE);
+ eina_hash_set(_parsingeots, filename, (void *)EINA_FALSE);
+ }
eo_lexer_free(ls);
return EINA_TRUE;
error:
+ if (eot) eina_hash_set(_parsingeots, filename, (void *)EINA_FALSE);
eo_lexer_free(ls);
return EINA_FALSE;
}
check(ls, TOK_VALUE);
eina_strbuf_append(buf, ls->t.value.s);
eina_strbuf_append(buf, ".eot");
- if (eina_hash_find(_parsingeots, ls->t.value.s))
+ if (!(found = eina_hash_find(_tfilenames, eina_strbuf_string_get(buf))))
{
pop_strbuf(ls);
snprintf(errbuf, sizeof(errbuf),
- "cyclic import '%s'", ls->t.value.s);
+ "unknown import '%s'", ls->t.value.s);
eo_lexer_syntax_error(ls, errbuf);
}
- if (!(found = eina_hash_find(_tfilenames, eina_strbuf_string_get(buf))))
+ if (eina_hash_find(_parsingeots, found))
{
pop_strbuf(ls);
snprintf(errbuf, sizeof(errbuf),
- "unknown import '%s'", ls->t.value.s);
+ "cyclic import '%s'", ls->t.value.s);
eo_lexer_syntax_error(ls, errbuf);
}
pop_strbuf(ls);
- eina_hash_set(_parsingeots, ls->t.value.s, (void *)EINA_TRUE);
if (!eo_parser_database_fill(found, EINA_TRUE))
{
pop_strbuf(ls);
"error while parsing import '%s'", ls->t.value.s);
eo_lexer_syntax_error(ls, errbuf);
}
- eina_hash_set(_parsingeots, ls->t.value.s, (void *)EINA_FALSE);
pop_strbuf(ls);
eo_lexer_get(ls);
check_next(ls, ';');