diff --git a/7.3.1026 b/7.3.1026 new file mode 100644 index 0000000..dd5ca1b --- /dev/null +++ b/7.3.1026 @@ -0,0 +1,108 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1026 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1026 +Problem: New regexp: pattern that includs a new-line matches too early. + (john McGowan) +Solution: Do not start searching in the second line. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + + +*** ../vim-7.3.1025/src/regexp_nfa.c 2013-05-26 17:45:41.000000000 +0200 +--- src/regexp_nfa.c 2013-05-26 18:38:01.000000000 +0200 +*************** +*** 3585,3596 **** + + } /* for (thislist = thislist; thislist->state; thislist++) */ + +! /* The first found match is the leftmost one, but there may be a +! * longer one. Keep running the NFA, but don't start from the +! * beginning. Also, do not add the start state in recursive calls of +! * nfa_regmatch(), because recursive calls should only start in the +! * first position. */ +! if (match == FALSE && start->c == NFA_MOPEN + 0) + { + #ifdef ENABLE_LOG + fprintf(log_fd, "(---) STARTSTATE\n"); +--- 3585,3599 ---- + + } /* for (thislist = thislist; thislist->state; thislist++) */ + +! /* Look for the start of a match in the current position by adding the +! * start state to the list of states. +! * The first found match is the leftmost one, thus the order of states +! * matters! +! * Do not add the start state in recursive calls of nfa_regmatch(), +! * because recursive calls should only start in the first position. +! * Also don't start a match past the first line. */ +! if (match == FALSE && start->c == NFA_MOPEN + 0 +! && reglnum == 0 && clen != 0) + { + #ifdef ENABLE_LOG + fprintf(log_fd, "(---) STARTSTATE\n"); +*** ../vim-7.3.1025/src/testdir/test64.in 2013-05-26 17:45:41.000000000 +0200 +--- src/testdir/test64.in 2013-05-26 18:34:04.000000000 +0200 +*************** +*** 372,377 **** +--- 372,383 ---- + :.+1,.+2yank + Gop:" + :" ++ :" Check a pattern with a line break matches in the right position. ++ /^Multiline ++ /\S.*\nx ++ :.yank ++ y$Gop:" ++ :" + :" + :/\%#=1^Results/,$wq! test.out + ENDTEST +*************** +*** 383,386 **** +--- 389,399 ---- + Ta 5 + Ac 7 + ++ Multiline: ++ abc ++ def ++ ghi ++ xjk ++ lmn ++ + Results of test64: +*** ../vim-7.3.1025/src/testdir/test64.ok 2013-05-26 17:45:41.000000000 +0200 +--- src/testdir/test64.ok 2013-05-26 18:34:00.000000000 +0200 +*************** +*** 705,707 **** +--- 705,708 ---- + + Ta 5 + Ac 7 ++ ghi +*** ../vim-7.3.1025/src/version.c 2013-05-26 17:45:41.000000000 +0200 +--- src/version.c 2013-05-26 18:35:52.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1026, + /**/ + +-- +For society, it's probably a good thing that engineers value function over +appearance. For example, you wouldn't want engineers to build nuclear power +plants that only _look_ like they would keep all the radiation inside. + (Scott Adams - The Dilbert principle) + + /// 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 ///