From a51a6d4845f8a8220700883db7c786a0007f1094 Mon Sep 17 00:00:00 2001 From: albert-github Date: Fri, 20 Nov 2020 16:25:30 +0100 Subject: 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. --- libmscgen/mscgen_language.y | 1 + libmscgen/mscgen_lexer.h | 1 + libmscgen/mscgen_lexer.l | 7 +++++++ 3 files changed, 9 insertions(+) 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 */ -- cgit v0.12