# HG changeset patch # User Bram Moolenaar # Date 1370442790 -7200 # Node ID d1376091d18b5a742ada87bf825d20e99ccbef19 # Parent 1a320d3306c5476070841627b362c76ba9f0be56 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 --- a/src/regexp.c +++ b/src/regexp.c @@ -6538,10 +6538,16 @@ regdump(pattern, r) 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 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -2960,10 +2960,15 @@ log_subexpr(sub) 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 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1120, +/**/ 1119, /**/ 1118,