summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0098
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0098')
-rw-r--r--data/vim/patches/8.1.0098294
1 files changed, 0 insertions, 294 deletions
diff --git a/data/vim/patches/8.1.0098 b/data/vim/patches/8.1.0098
deleted file mode 100644
index f05b16452..000000000
--- a/data/vim/patches/8.1.0098
+++ /dev/null
@@ -1,294 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.0098
-Fcc: outbox
-From: Bram Moolenaar <Bram@moolenaar.net>
-Mime-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-------------
-
-Patch 8.1.0098
-Problem: Segfault when pattern with \z() is very slow.
-Solution: Check for NULL regprog. Add "nfa_fail" to test_override() to be
- able to test this. Fix that 'searchhl' resets called_emsg.
-Files: src/syntax.c, runtime/doc/eval.txt, src/evalfunc.c, src/vim.h,
- src/testdir/test_syntax.vim, src/globals.h, src/screen.c,
- src/regexp.c, src/regexp_nfa.c
-
-
-*** ../vim-8.1.0097/src/syntax.c 2018-05-20 13:35:40.193163458 +0200
---- src/syntax.c 2018-06-23 13:47:27.294238648 +0200
-***************
-*** 3327,3332 ****
---- 3327,3338 ----
- profile_start(&pt);
- #endif
-
-+ if (rmp->regprog == NULL)
-+ // This can happen if a previous call to vim_regexec_multi() tried to
-+ // use the NFA engine, which resulted in NFA_TOO_EXPENSIVE, and
-+ // compiling the pattern with the other engine fails.
-+ return FALSE;
-+
- rmp->rmm_maxcol = syn_buf->b_p_smc;
- r = vim_regexec_multi(rmp, syn_win, syn_buf, lnum, col,
- #ifdef FEAT_RELTIME
-*** ../vim-8.1.0097/runtime/doc/eval.txt 2018-06-20 22:37:52.658911284 +0200
---- runtime/doc/eval.txt 2018-06-23 13:27:43.863676347 +0200
-***************
-*** 8694,8699 ****
---- 8694,8701 ----
- redraw disable the redrawing() function
- char_avail disable the char_avail() function
- starting reset the "starting" variable, see below
-+ nfa_fail makes the NFA regexp engine fail to force a
-+ fallback to the old engine
- ALL clear all overrides ({val} is not used)
-
- "starting" is to be used when a test should behave like
-*** ../vim-8.1.0097/src/evalfunc.c 2018-06-20 22:37:52.654911306 +0200
---- src/evalfunc.c 2018-06-23 13:29:32.603042364 +0200
-***************
-*** 13090,13099 ****
---- 13090,13102 ----
- save_starting = -1;
- }
- }
-+ else if (STRCMP(name, (char_u *)"nfa_fail") == 0)
-+ nfa_fail_for_testing = val;
- else if (STRCMP(name, (char_u *)"ALL") == 0)
- {
- disable_char_avail_for_testing = FALSE;
- disable_redraw_for_testing = FALSE;
-+ nfa_fail_for_testing = FALSE;
- if (save_starting >= 0)
- {
- starting = save_starting;
-*** ../vim-8.1.0097/src/vim.h 2018-04-30 15:12:48.000000000 +0200
---- src/vim.h 2018-06-23 14:06:57.244449803 +0200
-***************
-*** 1013,1018 ****
---- 1013,1019 ----
- /* values for reg_do_extmatch */
- # define REX_SET 1 /* to allow \z\(...\), */
- # define REX_USE 2 /* to allow \z\1 et al. */
-+ # define REX_ALL (REX_SET | REX_USE)
- #endif
-
- /* Return values for fullpathcmp() */
-*** ../vim-8.1.0097/src/testdir/test_syntax.vim 2018-02-24 19:33:19.000000000 +0100
---- src/testdir/test_syntax.vim 2018-06-23 14:11:40.474945470 +0200
-***************
-*** 562,564 ****
---- 562,576 ----
- let $COLORFGBG = ''
- call delete('Xtest.c')
- endfun
-+
-+ " Using \z() in a region with NFA failing should not crash.
-+ func Test_syn_wrong_z_one()
-+ new
-+ call setline(1, ['just some text', 'with foo and bar to match with'])
-+ syn region FooBar start="foo\z(.*\)bar" end="\z1"
-+ call test_override("nfa_fail", 1)
-+ redraw!
-+ redraw!
-+ call test_override("ALL", 0)
-+ bwipe!
-+ endfunc
-*** ../vim-8.1.0097/src/globals.h 2018-06-19 17:49:20.296015375 +0200
---- src/globals.h 2018-06-23 13:30:00.290880945 +0200
-***************
-*** 1634,1639 ****
---- 1634,1640 ----
- /* flags set by test_override() */
- EXTERN int disable_char_avail_for_testing INIT(= 0);
- EXTERN int disable_redraw_for_testing INIT(= 0);
-+ EXTERN int nfa_fail_for_testing INIT(= 0);
-
- EXTERN int in_free_unref_items INIT(= FALSE);
- #endif
-*** ../vim-8.1.0097/src/screen.c 2018-06-17 16:23:29.341140642 +0200
---- src/screen.c 2018-06-23 14:02:46.329754550 +0200
-***************
-*** 7868,7873 ****
---- 7868,7874 ----
- linenr_T l;
- colnr_T matchcol;
- long nmatched;
-+ int save_called_emsg = called_emsg;
-
- if (shl->lnum != 0)
- {
-***************
-*** 7986,7991 ****
---- 7987,7995 ----
- break; /* useful match found */
- }
- }
-+
-+ // Restore called_emsg for assert_fails().
-+ called_emsg = save_called_emsg;
- }
-
- /*
-*** ../vim-8.1.0097/src/regexp.c 2018-02-13 16:28:11.000000000 +0100
---- src/regexp.c 2018-06-23 14:09:21.727692568 +0200
-***************
-*** 367,373 ****
- static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
- #ifdef FEAT_SYN_HL
- static char_u e_z_not_allowed[] = N_("E66: \\z( not allowed here");
-! static char_u e_z1_not_allowed[] = N_("E67: \\z1 et al. not allowed here");
- #endif
- static char_u e_missing_sb[] = N_("E69: Missing ] after %s%%[");
- static char_u e_empty_sb[] = N_("E70: Empty %s%%[]");
---- 367,373 ----
- static char_u e_unmatchedpar[] = N_("E55: Unmatched %s)");
- #ifdef FEAT_SYN_HL
- static char_u e_z_not_allowed[] = N_("E66: \\z( not allowed here");
-! static char_u e_z1_not_allowed[] = N_("E67: \\z1 - \\z9 not allowed here");
- #endif
- static char_u e_missing_sb[] = N_("E69: Missing ] after %s%%[");
- static char_u e_empty_sb[] = N_("E70: Empty %s%%[]");
-***************
-*** 2139,2145 ****
- switch (c)
- {
- #ifdef FEAT_SYN_HL
-! case '(': if (reg_do_extmatch != REX_SET)
- EMSG_RET_NULL(_(e_z_not_allowed));
- if (one_exactly)
- EMSG_ONE_RET_NULL;
---- 2139,2145 ----
- switch (c)
- {
- #ifdef FEAT_SYN_HL
-! case '(': if ((reg_do_extmatch & REX_SET) == 0)
- EMSG_RET_NULL(_(e_z_not_allowed));
- if (one_exactly)
- EMSG_ONE_RET_NULL;
-***************
-*** 2158,2164 ****
- case '6':
- case '7':
- case '8':
-! case '9': if (reg_do_extmatch != REX_USE)
- EMSG_RET_NULL(_(e_z1_not_allowed));
- ret = regnode(ZREF + c - '0');
- re_has_z = REX_USE;
---- 2158,2164 ----
- case '6':
- case '7':
- case '8':
-! case '9': if ((reg_do_extmatch & REX_USE) == 0)
- EMSG_RET_NULL(_(e_z1_not_allowed));
- ret = regnode(ZREF + c - '0');
- re_has_z = REX_USE;
-***************
-*** 8332,8339 ****
-
- /*
- * Match a regexp against multiple lines.
-! * "rmp->regprog" is a compiled regexp as returned by vim_regcomp().
-! * Note: "rmp->regprog" may be freed and changed.
- * Uses curbuf for line count and 'iskeyword'.
- *
- * Return zero if there is no match. Return number of lines contained in the
---- 8332,8339 ----
-
- /*
- * Match a regexp against multiple lines.
-! * "rmp->regprog" must be a compiled regexp as returned by vim_regcomp().
-! * Note: "rmp->regprog" may be freed and changed, even set to NULL.
- * Uses curbuf for line count and 'iskeyword'.
- *
- * Return zero if there is no match. Return number of lines contained in the
-***************
-*** 8376,8382 ****
---- 8376,8387 ----
- #ifdef FEAT_EVAL
- report_re_switch(pat);
- #endif
-+ // checking for \z misuse was already done when compiling for NFA,
-+ // allow all here
-+ reg_do_extmatch = REX_ALL;
- rmp->regprog = vim_regcomp(pat, re_flags);
-+ reg_do_extmatch = 0;
-+
- if (rmp->regprog != NULL)
- result = rmp->regprog->engine->regexec_multi(
- rmp, win, buf, lnum, col, tm, timed_out);
-*** ../vim-8.1.0097/src/regexp_nfa.c 2018-06-22 21:42:26.743455036 +0200
---- src/regexp_nfa.c 2018-06-23 14:08:50.071858765 +0200
-***************
-*** 1482,1488 ****
- case '8':
- case '9':
- /* \z1...\z9 */
-! if (reg_do_extmatch != REX_USE)
- EMSG_RET_FAIL(_(e_z1_not_allowed));
- EMIT(NFA_ZREF1 + (no_Magic(c) - '1'));
- /* No need to set nfa_has_backref, the sub-matches don't
---- 1482,1488 ----
- case '8':
- case '9':
- /* \z1...\z9 */
-! if ((reg_do_extmatch & REX_USE) == 0)
- EMSG_RET_FAIL(_(e_z1_not_allowed));
- EMIT(NFA_ZREF1 + (no_Magic(c) - '1'));
- /* No need to set nfa_has_backref, the sub-matches don't
-***************
-*** 1491,1497 ****
- break;
- case '(':
- /* \z( */
-! if (reg_do_extmatch != REX_SET)
- EMSG_RET_FAIL(_(e_z_not_allowed));
- if (nfa_reg(REG_ZPAREN) == FAIL)
- return FAIL; /* cascaded error */
---- 1491,1497 ----
- break;
- case '(':
- /* \z( */
-! if ((reg_do_extmatch & REX_SET) == 0)
- EMSG_RET_FAIL(_(e_z_not_allowed));
- if (nfa_reg(REG_ZPAREN) == FAIL)
- return FAIL; /* cascaded error */
-***************
-*** 5692,5698 ****
- nextlist->n = 0; /* clear nextlist */
- nextlist->has_pim = FALSE;
- ++nfa_listid;
-! if (prog->re_engine == AUTOMATIC_ENGINE && nfa_listid >= NFA_MAX_STATES)
- {
- /* too many states, retry with old engine */
- nfa_match = NFA_TOO_EXPENSIVE;
---- 5692,5699 ----
- nextlist->n = 0; /* clear nextlist */
- nextlist->has_pim = FALSE;
- ++nfa_listid;
-! if (prog->re_engine == AUTOMATIC_ENGINE
-! && (nfa_listid >= NFA_MAX_STATES || nfa_fail_for_testing))
- {
- /* too many states, retry with old engine */
- nfa_match = NFA_TOO_EXPENSIVE;
-*** ../vim-8.1.0097/src/version.c 2018-06-22 21:42:26.747455046 +0200
---- src/version.c 2018-06-23 13:28:43.939326081 +0200
-***************
-*** 763,764 ****
---- 763,766 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 98,
- /**/
-
---
-I AM THANKFUL...
-...for all the complaining I hear about the government
-because it means we have freedom of speech.
-
- /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
-/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
-\\\ an exciting new programming language -- http://www.Zimbu.org ///
- \\\ help me help AIDS victims -- http://ICCF-Holland.org ///