changeset 4770:b20dbf3a5370 v7.3.1132

updated for version 7.3.1132 Problem: Crash when debugging regexp. Solution: Do not try to dump subexpr that were not set. Skip over count of \% items.
author Bram Moolenaar <bram@vim.org>
date Thu, 06 Jun 2013 18:04:51 +0200
parents 92d20f095c05
children 0a18b6f516b2
files src/regexp.c src/regexp_nfa.c src/version.c
diffstat 3 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -6548,6 +6548,12 @@ regdump(pattern, r)
 	    fprintf(f, " count %ld", OPERAND_MIN(s));
 	    s += 4;
 	}
+	else if (op == RE_LNUM || op == RE_COL || op == RE_VCOL)
+	{
+	    /* one int plus comperator */
+	    fprintf(f, " count %ld", OPERAND_MIN(s));
+	    s += 5;
+	}
 	s += 3;
 	if (op == ANYOF || op == ANYOF + ADD_NL
 		|| op == ANYBUT || op == ANYBUT + ADD_NL
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -256,7 +256,7 @@ static int nfa_alt_listid;
 /* 0 for first call to nfa_regmatch(), 1 for recursive call. */
 static int nfa_ll_index = 0;
 
-static int nfa_regcomp_start __ARGS((char_u*expr, int re_flags));
+static int nfa_regcomp_start __ARGS((char_u *expr, int re_flags));
 static int nfa_recognize_char_class __ARGS((char_u *start, char_u *end, int extra_newl));
 static int nfa_emit_equi_class __ARGS((int c, int neg));
 static int nfa_regatom __ARGS((void));
@@ -2927,7 +2927,8 @@ log_subsexpr(subs)
 {
     log_subexpr(&subs->norm);
 # ifdef FEAT_SYN_HL
-    log_subexpr(&subs->synt);
+    if (nfa_has_zsubexpr)
+	log_subexpr(&subs->synt);
 # endif
 }
 
--- 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 */
 /**/
+    1132,
+/**/
     1131,
 /**/
     1130,