X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom_lex_common.c;h=1eeab459d8e6c8c1579e19a8050ada9dee47fcc0;hb=f112d9051302c0bffa505148e55981b954d30dcf;hp=d547ea4fa8eb6683e920cd60cef8772dc8250784;hpb=70151ec5721c6d6d6595a325ab10c73873c4df41;p=gedcom-parse.git diff --git a/gedcom_lex_common.c b/gedcom_lex_common.c index d547ea4..1eeab45 100644 --- a/gedcom_lex_common.c +++ b/gedcom_lex_common.c @@ -76,13 +76,14 @@ int test_loop(ENCODING enc, char* code) line_len = 0; #define CHECK_LINE_LEN \ - { if (line_len != (size_t)-1) \ + { if (line_len != (size_t)-1) { \ line_len += strlen(yytext); \ - if (line_len > MAXGEDCLINELEN * encoding_width) { \ - gedcom_error("Line too long, max %d characters", \ - MAXGEDCLINELEN); \ - line_len = (size_t)-1; \ - return BADTOKEN; \ + if (line_len > MAXGEDCLINELEN * encoding_width) { \ + gedcom_error("Line too long, max %d characters", \ + MAXGEDCLINELEN); \ + line_len = (size_t)-1; \ + return BADTOKEN; \ + } \ } \ } @@ -264,6 +265,10 @@ int test_loop(ENCODING enc, char* code) return CLOSE; \ } \ else { \ + /* Reset our state */ \ + current_level = -1; \ + level_diff = MAXGEDCLEVEL; \ + /* ... then terminate lex */ \ yyterminate(); \ } \ }