regex parser was not properly reset before each file, sometimes resulting in wrong line counts, when the previous scanned file ended with a match

Mon, 19 Mar 2018 16:36:14 +0100

author
Mike Becker <universe@uap-core.de>
date
Mon, 19 Mar 2018 16:36:14 +0100
changeset 54
76d46533b9a9
parent 53
32b9e0a5cebd
child 55
b19e73926a28

regex parser was not properly reset before each file, sometimes resulting in wrong line counts, when the previous scanned file ended with a match

src/regex_parser.c file | annotate | diff | comparison | revisions
src/regex_parser.h file | annotate | diff | comparison | revisions
src/scanner.c file | annotate | diff | comparison | revisions
--- a/src/regex_parser.c	Thu Jun 01 17:33:34 2017 +0200
+++ b/src/regex_parser.c	Mon Mar 19 16:36:14 2018 +0100
@@ -43,6 +43,10 @@
   return ret;
 }
 
+void regex_parser_reset(regex_parser_t* parser) {
+  parser->pattern_match = parser->matched_lines = 0;
+}
+
 void regex_destcomppats(regex_parser_t* parser) {
   if (parser->compiled_patterns != NULL) {
     for (int i = 0 ; i < parser->compiled_pattern_count ; i++) {
--- a/src/regex_parser.h	Thu Jun 01 17:33:34 2017 +0200
+++ b/src/regex_parser.h	Mon Mar 19 16:36:14 2018 +0100
@@ -54,6 +54,7 @@
 
 regex_parser_t* new_regex_parser_t();
 void destroy_regex_parser_t(regex_parser_t*);
+void regex_parser_reset(regex_parser_t* parser);
 
 bool regex_parser_matching(regex_parser_t*);
 bool regex_compile_all(regex_parser_t*);
--- a/src/scanner.c	Thu Jun 01 17:33:34 2017 +0200
+++ b/src/scanner.c	Mon Mar 19 16:36:14 2018 +0100
@@ -163,6 +163,7 @@
         lines = 0;
         bfile = false;
         bfile_reset(settings->bfileHeuristics);
+        regex_parser_reset(settings->regex);
         char line_buffer[REGEX_MAX_LINELENGTH];
         int line_buffer_offset = 0;
 

mercurial