diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-05-28 22:30:35 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-05-28 22:30:35 +0200 |
commit | 51a2983904060e3d69ae31eca99169cd9d7548e9 (patch) | |
tree | fab4dc55658ba9488e39ba2ff17432bc6b72d7f5 | |
parent | 5714b80032adcaa5ecf6d92efddf61387a280d32 (diff) | |
download | vim-git-51a2983904060e3d69ae31eca99169cd9d7548e9.tar.gz |
updated for version 7.3.1034v7.3.1034
Problem: New regexp code using strange multi-byte code.
Solution: Use the normal code to advance and backup pointers.
-rw-r--r-- | src/regexp_nfa.c | 64 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 12 insertions, 54 deletions
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index 2304ce40f..9339cd3d4 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -188,8 +188,6 @@ static int istate; /* Index in the state vector, used in new_state() */ 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 void nfa_inc __ARGS((char_u **p)); -static void nfa_dec __ARGS((char_u **p)); static int nfa_regatom __ARGS((void)); static int nfa_regpiece __ARGS((void)); static int nfa_regconcat __ARGS((void)); @@ -554,48 +552,6 @@ nfa_emit_equi_class(c, neg) */ /* - * Increments the pointer "p" by one (multi-byte) character. - */ - static void -nfa_inc(p) - char_u **p; -{ -#ifdef FEAT_MBYTE - if (has_mbyte) - mb_ptr2char_adv(p); - else -#endif - *p = *p + 1; -} - -/* - * Decrements the pointer "p" by one (multi-byte) character. - */ - static void -nfa_dec(p) - char_u **p; -{ -#ifdef FEAT_MBYTE - char_u *p2, *oldp; - - if (has_mbyte) - { - oldp = *p; - /* Try to find the multibyte char that advances to the current - * position. */ - do - { - *p = *p - 1; - p2 = *p; - mb_ptr2char_adv(&p2); - } while (p2 != oldp); - } -#else - *p = *p - 1; -#endif -} - -/* * Parse the lowest level. * * An atom can be one of a long list of items. Many atoms match one character @@ -963,7 +919,7 @@ collection: EMIT(NFA_OR); } regparse = endp; - nfa_inc(®parse); + mb_ptr_adv(regparse); return OK; } /* @@ -978,7 +934,7 @@ collection: { negated = TRUE; glue = NFA_CONCAT; - nfa_inc(®parse); + mb_ptr_adv(regparse); } if (*regparse == '-') { @@ -986,7 +942,7 @@ collection: EMIT(startc); TRY_NEG(); EMIT_GLUE(); - nfa_inc(®parse); + mb_ptr_adv(regparse); } /* Emit the OR branches for each character in the [] */ emit_range = FALSE; @@ -1090,7 +1046,7 @@ collection: { emit_range = TRUE; startc = oldstartc; - nfa_inc(®parse); + mb_ptr_adv(regparse); continue; /* reading the end of the range */ } @@ -1110,7 +1066,7 @@ collection: ) ) { - nfa_inc(®parse); + mb_ptr_adv(regparse); if (*regparse == 'n') startc = reg_string ? NL : NFA_NEWL; @@ -1125,7 +1081,7 @@ collection: /* TODO(RE) This needs more testing */ startc = coll_get_char(); got_coll_char = TRUE; - nfa_dec(®parse); + mb_ptr_back(old_regparse, regparse); } else { @@ -1210,17 +1166,17 @@ collection: EMIT_GLUE(); } - nfa_inc(®parse); + mb_ptr_adv(regparse); } /* while (p < endp) */ - nfa_dec(®parse); + mb_ptr_back(old_regparse, regparse); if (*regparse == '-') /* if last, '-' is just a char */ { EMIT('-'); TRY_NEG(); EMIT_GLUE(); } - nfa_inc(®parse); + mb_ptr_adv(regparse); if (extra == ADD_NL) /* \_[] also matches \n */ { @@ -1231,7 +1187,7 @@ collection: /* skip the trailing ] */ regparse = endp; - nfa_inc(®parse); + mb_ptr_adv(regparse); if (negated == TRUE) { /* Mark end of negated char range */ diff --git a/src/version.c b/src/version.c index 90beb4722..72ad14f98 100644 --- 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 */ /**/ + 1034, +/**/ 1033, /**/ 1032, |