summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2020-11-20 15:25:30 (GMT)
committeralbert-github <albert.tests@gmail.com>2020-11-20 15:25:30 (GMT)
commita51a6d4845f8a8220700883db7c786a0007f1094 (patch)
treece60282e974309104105042af2c99770f6da8c46
parent4211ec287793c0bae93977a9359db9bafef6d2ac (diff)
downloadDoxygen-a51a6d4845f8a8220700883db7c786a0007f1094.zip
Doxygen-a51a6d4845f8a8220700883db7c786a0007f1094.tar.gz
Doxygen-a51a6d4845f8a8220700883db7c786a0007f1094.tar.bz2
Incorrect line count in case of an error in msc input
The variables to store line number etc. are static variables and should be reset on each invocation of the lex msc parser.
-rw-r--r--libmscgen/mscgen_language.y1
-rw-r--r--libmscgen/mscgen_lexer.h1
-rw-r--r--libmscgen/mscgen_lexer.l7
3 files changed, 9 insertions, 0 deletions
diff --git a/libmscgen/mscgen_language.y b/libmscgen/mscgen_language.y
index 02b36bb..52dedb3 100644
--- a/libmscgen/mscgen_language.y
+++ b/libmscgen/mscgen_language.y
@@ -209,6 +209,7 @@ Msc MscParse(FILE *in)
yyin = in;
+ lex_resetparser();
/* Parse, and check that no errors are found */
if(yyparse((void *)&m) != 0)
{
diff --git a/libmscgen/mscgen_lexer.h b/libmscgen/mscgen_lexer.h
index 0cbb21f..bba38c1 100644
--- a/libmscgen/mscgen_lexer.h
+++ b/libmscgen/mscgen_lexer.h
@@ -56,6 +56,7 @@ Boolean lex_getutf8(void);
unsigned long lex_getlinenum(void);
char *lex_getline(void);
void lex_destroy(void);
+void lex_resetparser(void);
#endif /* MSCGEN_LEXER_H */
diff --git a/libmscgen/mscgen_lexer.l b/libmscgen/mscgen_lexer.l
index 52f5e05..ea812f9 100644
--- a/libmscgen/mscgen_lexer.l
+++ b/libmscgen/mscgen_lexer.l
@@ -234,5 +234,12 @@ Boolean lex_getutf8(void)
return lex_utf8;
}
+void lex_resetparser()
+{
+ lex_linenum = 1;
+ lex_line = NULL;
+ lex_utf8 = FALSE;
+}
+
#include "mscgen_lexer.l.h"
/* END OF FILE */