From: Wolfgang (Blub) Bumiller Date: Sun, 18 Nov 2012 14:23:00 +0000 (+0100) Subject: fixup line counting in #pragmas X-Git-Tag: 0.1.9~404^2~17 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=9898ab5316d50a817a06c9c56d82e78f383437f8;p=xonotic%2Fgmqcc.git fixup line counting in #pragmas --- diff --git a/lexer.c b/lexer.c index c28ad88..40756c0 100644 --- a/lexer.c +++ b/lexer.c @@ -353,10 +353,13 @@ static bool lex_try_pragma(lex_file *lex) char *pragma = NULL; char *command = NULL; char *param = NULL; + size_t line; if (lex->flags.preprocessing) return false; + line = lex->line; + ch = lex_getch(lex); if (ch != '#') { lex_ungetch(lex, ch); @@ -393,7 +396,7 @@ static bool lex_try_pragma(lex_file *lex) if (!strcmp(command, "push")) { if (!strcmp(param, "line")) { lex->push_line++; - lex->line--; + --line; } else goto unroll; @@ -402,7 +405,6 @@ static bool lex_try_pragma(lex_file *lex) if (!strcmp(param, "line")) { if (lex->push_line) lex->push_line--; - lex->line--; } else goto unroll; @@ -412,6 +414,7 @@ static bool lex_try_pragma(lex_file *lex) while (ch != '\n') ch = lex_getch(lex); + lex->line = line; return true; unroll: @@ -440,6 +443,8 @@ unroll: vec_free(pragma); } lex_ungetch(lex, '#'); + + lex->line = line; return false; }