From 69afb7bf0aef4e9b39acbdb7849dd9c44b1345c5 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 2 Jun 2013 15:55:55 +0200 Subject: updated for version 7.3.1092 Problem: Can't build with regexp debugging. NFA debug output shows wrong pattern. Solution: Fix debugging code for recent changes. Add the pattern to the program. --- src/regexp.h | 6 ++++-- src/regexp_nfa.c | 29 ++++++++++++++++++++--------- src/version.c | 2 ++ 3 files changed, 26 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/regexp.h b/src/regexp.h index f44578d8f..9809b3c0f 100644 --- a/src/regexp.h +++ b/src/regexp.h @@ -86,12 +86,14 @@ typedef struct regengine_T *engine; unsigned regflags; - regprog_T regprog; - nfa_state_T *start; + nfa_state_T *start; /* points into state[] */ int has_zend; /* pattern contains \ze */ int has_backref; /* pattern contains \1 .. \9 */ #ifdef FEAT_SYN_HL int reghasz; +#endif +#ifdef DEBUG + char_u *pattern; #endif int nsubexp; /* number of () */ int nstate; diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index f8f207cec..11aca9c13 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -3133,12 +3133,12 @@ skip_add: { int col; - if (thread->sub.in_use <= 0) + if (thread->subs.norm.in_use <= 0) col = -1; else if (REG_MULTI) - col = thread->sub.list.multi[0].start.col; + col = thread->subs.norm.list.multi[0].start.col; else - col = (int)(thread->sub.list.line[0].start - regline); + col = (int)(thread->subs.norm.list.line[0].start - regline); nfa_set_code(state->c); fprintf(log_fd, "> Adding state %d to list %d. char %d: %s (start col %d)\n", abs(state->id), l->id, state->c, code, col); @@ -3152,12 +3152,12 @@ skip_add: { int col; - if (sub->in_use <= 0) + if (subs->norm.in_use <= 0) col = -1; else if (REG_MULTI) - col = sub->list.multi[0].start.col; + col = subs->norm.list.multi[0].start.col; else - col = (int)(sub->list.line[0].start - regline); + col = (int)(subs->norm.list.line[0].start - regline); nfa_set_code(state->c); fprintf(log_fd, "> Processing state %d for list %d. char %d: %s (start col %d)\n", abs(state->id), l->id, state->c, code, col); @@ -3836,12 +3836,12 @@ nfa_regmatch(start, submatch, m, endp) { int col; - if (t->sub.in_use <= 0) + if (t->subs.norm.in_use <= 0) col = -1; else if (REG_MULTI) - col = t->sub.list.multi[0].start.col; + col = t->subs.norm.list.multi[0].start.col; else - col = (int)(t->sub.list.line[0].start - regline); + col = (int)(t->subs.norm.list.line[0].start - regline); nfa_set_code(t->state->c); fprintf(log_fd, "(%d) char %d %s (start col %d) ... \n", abs(t->state->id), (int)t->state->c, code, col); @@ -4818,6 +4818,9 @@ nfa_regexec_both(line, col) nfa_has_zend = prog->has_zend; nfa_has_backref = prog->has_backref; nfa_nsubexpr = prog->nsubexp; +#ifdef DEBUG + nfa_regengine.expr = prog->pattern; +#endif nstate = prog->nstate; for (i = 0; i < nstate; ++i) @@ -4828,6 +4831,10 @@ nfa_regexec_both(line, col) retval = nfa_regtry(prog, col); +#ifdef DEBUG + nfa_regengine.expr = NULL; +#endif + theend: return retval; } @@ -4921,6 +4928,10 @@ nfa_regcomp(expr, re_flags) /* Remember whether this pattern has any \z specials in it. */ prog->reghasz = re_has_z; #endif +#ifdef DEBUG + prog->pattern = vim_strsave(expr); /* memory will leak */ + nfa_regengine.expr = NULL; +#endif out: vim_free(post_start); diff --git a/src/version.c b/src/version.c index 3824278dd..0e2c7282c 100644 --- a/src/version.c +++ b/src/version.c @@ -728,6 +728,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1092, /**/ 1091, /**/ -- cgit v1.2.1