updated for version 7.3.1120
Problem: Crash when regexp logging is enabled.
Solution: Avoid using NULL pointers. Advance over count argument.
diff --git a/src/regexp.c b/src/regexp.c
index 853d255..bf640fc 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -6538,10 +6538,16 @@
end = next;
if (op == BRACE_LIMITS)
{
- /* Two short ints */
+ /* Two ints */
fprintf(f, " minval %ld, maxval %ld", OPERAND_MIN(s), OPERAND_MAX(s));
s += 8;
}
+ else if (op == BEHIND || op == NOBEHIND)
+ {
+ /* one int */
+ fprintf(f, " count %ld", OPERAND_MIN(s));
+ s += 4;
+ }
s += 3;
if (op == ANYOF || op == ANYOF + ADD_NL
|| op == ANYBUT || op == ANYBUT + ADD_NL
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
index 4dea47c..5873cfc 100644
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -2960,10 +2960,15 @@
sub->list.multi[j].end.col,
(int)sub->list.multi[j].end.lnum);
else
+ {
+ char *s = (char *)sub->list.line[j].start;
+ char *e = (char *)sub->list.line[j].end;
+
fprintf(log_fd, "\n *** group %d, start: \"%s\", end: \"%s\"",
j,
- (char *)sub->list.line[j].start,
- (char *)sub->list.line[j].end);
+ s == NULL ? "NULL" : s,
+ e == NULL ? "NULL" : e);
+ }
fprintf(log_fd, "\n");
}
#endif
diff --git a/src/version.c b/src/version.c
index 8bb135a..f6585e1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1120,
+/**/
1119,
/**/
1118,