Increment line number also for generating gedcom level error.
[gedcom-parse.git] / gedcom / gedcom_lex_common.c
index efc4bf931eed796ff332e6dec4df9a36f20d9c28..d8f35d768481e219e273c54e8278ec4d13ee6a0a 100644 (file)
@@ -164,6 +164,7 @@ static int dummy_conv = 0;
     gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf);                   \
     gedcom_lval.tag.value  = TAG_##THETAG;                                   \
     BEGIN(NORMAL);                                                           \
+    line_no++;                                                               \
     return TAG_##THETAG;                                                     \
   }
 
@@ -235,6 +236,7 @@ static int dummy_conv = 0;
      CHECK_LINE_LEN;                                                          \
      if ((level < 0) || (level > MAXGEDCLEVEL)) {                             \
        error_level_out_of_range();                                            \
+       line_no++;                                                             \
        return BADTOKEN;                                                       \
      }                                                                        \
      level_diff = level - current_level;                                      \
@@ -252,6 +254,7 @@ static int dummy_conv = 0;
      else {                                                                   \
        /* should never happen (error to GEDCOM spec) */                       \
        error_level_too_high(level_diff);                                      \
+       line_no++;                                                             \
        return BADTOKEN;                                                       \
      }                                                                        \
    } 
@@ -260,12 +263,14 @@ static int dummy_conv = 0;
 #define ACTION_ALPHANUM                                                       \
    { if (strlen(yytext) > MAXGEDCTAGLEN * encoding_width) {                   \
        error_tag_too_long(yytext);                                            \
+       line_no++;                                                             \
        return BADTOKEN;                                                       \
      }                                                                        \
      CHECK_LINE_LEN;                                                          \
      gedcom_lval.tag.string = TO_INTERNAL(yytext, tag_buf);                   \
      gedcom_lval.tag.value  = USERTAG;                                        \
      BEGIN(NORMAL);                                                           \
+     line_no++;                                                               \
      return USERTAG;                                                          \
    }
 
@@ -327,7 +332,6 @@ static int dummy_conv = 0;
 #define ACTION_TERMINATOR                                                     \
   { CHECK_LINE_LEN;                                                           \
     INIT_LINE_LEN;                                                            \
-    line_no++;                                                                \
     BEGIN(INITIAL);                                                           \
   }