summaryrefslogtreecommitdiffstats
path: root/patches/source/vim/patches/7.4.290
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/vim/patches/7.4.290')
-rw-r--r--patches/source/vim/patches/7.4.290156
1 files changed, 156 insertions, 0 deletions
diff --git a/patches/source/vim/patches/7.4.290 b/patches/source/vim/patches/7.4.290
new file mode 100644
index 000000000..e2e1e62bb
--- /dev/null
+++ b/patches/source/vim/patches/7.4.290
@@ -0,0 +1,156 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.4.290
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.4.290
+Problem: A non-greedy match followed by a branch is too greedy. (Ingo
+ Karkat)
+Solution: Add NFA_MATCH when it is already in the state list if the position
+ differs.
+Files: src/testdir/test64.in, src/testdir/test64.ok, src/regexp_nfa.c
+
+
+*** ../vim-7.4.289/src/testdir/test64.in 2014-05-13 15:56:45.017670668 +0200
+--- src/testdir/test64.in 2014-05-13 16:15:57.213680754 +0200
+***************
+*** 238,244 ****
+ :call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz'])
+ :call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa',''])
+ :call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
+! :call add(tl, [2, '\v(a{-1,3})+','aa','aa','a'])
+ :"
+ :" Test Character classes
+ :call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
+--- 238,248 ----
+ :call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz'])
+ :call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa',''])
+ :call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
+! :call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])
+! :call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])
+! :call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])
+! :call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])
+! :call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])
+ :"
+ :" Test Character classes
+ :call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
+***************
+*** 462,476 ****
+ : try
+ : let l = matchlist(text, pat)
+ : catch
+! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"'
+ : endtry
+ :" check the match itself
+ : if len(l) == 0 && len(t) > matchidx
+! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"'
+ : elseif len(l) > 0 && len(t) == matchidx
+! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match'
+ : elseif len(t) > matchidx && l[0] != t[matchidx]
+! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
+ : else
+ : $put ='OK ' . engine . ' - ' . pat
+ : endif
+--- 466,480 ----
+ : try
+ : let l = matchlist(text, pat)
+ : catch
+! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"'
+ : endtry
+ :" check the match itself
+ : if len(l) == 0 && len(t) > matchidx
+! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"'
+ : elseif len(l) > 0 && len(t) == matchidx
+! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match'
+ : elseif len(t) > matchidx && l[0] != t[matchidx]
+! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
+ : else
+ : $put ='OK ' . engine . ' - ' . pat
+ : endif
+***************
+*** 483,489 ****
+ : let e = t[matchidx + i]
+ : endif
+ : if l[i] != e
+! : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
+ : endif
+ : endfor
+ : unlet i
+--- 487,493 ----
+ : let e = t[matchidx + i]
+ : endif
+ : if l[i] != e
+! : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
+ : endif
+ : endfor
+ : unlet i
+*** ../vim-7.4.289/src/testdir/test64.ok 2014-05-13 15:56:45.017670668 +0200
+--- src/testdir/test64.ok 2014-05-13 16:39:35.077693166 +0200
+***************
+*** 533,538 ****
+--- 533,550 ----
+ OK 0 - \v(a{-1,3})+
+ OK 1 - \v(a{-1,3})+
+ OK 2 - \v(a{-1,3})+
++ OK 0 - ^\s\{-}\zs\( x\|x$\)
++ OK 1 - ^\s\{-}\zs\( x\|x$\)
++ OK 2 - ^\s\{-}\zs\( x\|x$\)
++ OK 0 - ^\s\{-}\zs\(x\| x$\)
++ OK 1 - ^\s\{-}\zs\(x\| x$\)
++ OK 2 - ^\s\{-}\zs\(x\| x$\)
++ OK 0 - ^\s\{-}\ze\(x\| x$\)
++ OK 1 - ^\s\{-}\ze\(x\| x$\)
++ OK 2 - ^\s\{-}\ze\(x\| x$\)
++ OK 0 - ^\(\s\{-}\)\(x\| x$\)
++ OK 1 - ^\(\s\{-}\)\(x\| x$\)
++ OK 2 - ^\(\s\{-}\)\(x\| x$\)
+ OK 0 - \d\+e\d\d
+ OK 1 - \d\+e\d\d
+ OK 2 - \d\+e\d\d
+*** ../vim-7.4.289/src/regexp_nfa.c 2014-05-13 15:56:45.021670668 +0200
+--- src/regexp_nfa.c 2014-05-13 16:37:58.481692320 +0200
+***************
+*** 4324,4331 ****
+ {
+ /* This state is already in the list, don't add it again,
+ * unless it is an MOPEN that is used for a backreference or
+! * when there is a PIM. */
+! if (!nfa_has_backref && pim == NULL && !l->has_pim)
+ {
+ skip_add:
+ #ifdef ENABLE_LOG
+--- 4324,4333 ----
+ {
+ /* This state is already in the list, don't add it again,
+ * unless it is an MOPEN that is used for a backreference or
+! * when there is a PIM. For NFA_MATCH check the position,
+! * lower position is preferred. */
+! if (!nfa_has_backref && pim == NULL && !l->has_pim
+! && state->c != NFA_MATCH)
+ {
+ skip_add:
+ #ifdef ENABLE_LOG
+*** ../vim-7.4.289/src/version.c 2014-05-13 15:56:45.025670668 +0200
+--- src/version.c 2014-05-13 16:13:33.953679500 +0200
+***************
+*** 736,737 ****
+--- 736,739 ----
+ { /* Add new patch number below this line */
++ /**/
++ 290,
+ /**/
+
+--
+Although the scythe isn't pre-eminent among the weapons of war, anyone who
+has been on the wrong end of, say, a peasants' revolt will know that in
+skilled hands it is fearsome.
+ -- (Terry Pratchett, Mort)
+
+ /// 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 ///