changeset 13084:25ab78f14c8b v8.0.1417

patch 8.0.1417: test doesn't search for a sentence commit https://github.com/vim/vim/commit/1bd999f982e783219a06e6c8f219df1d53ac7e77 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Dec 19 22:25:40 2017 +0100 patch 8.0.1417: test doesn't search for a sentence Problem: Test doesn't search for a sentence. Still fails when searching for start of sentence. (Dominique Pelle) Solution: Add paren. Check for MAXCOL in dec().
author Christian Brabandt <cb@256bit.org>
date Tue, 19 Dec 2017 22:30:06 +0100
parents 2b7dcbf6426a
children d8f9d1cced93
files src/misc2.c src/testdir/test_search.vim src/version.c
diffstat 3 files changed, 25 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -417,8 +417,21 @@ dec(pos_T *lp)
 #ifdef FEAT_VIRTUALEDIT
     lp->coladd = 0;
 #endif
-    if (lp->col > 0)		/* still within line */
+    if (lp->col == MAXCOL)
     {
+	/* past end of line */
+	p = ml_get(lp->lnum);
+	lp->col = (colnr_T)STRLEN(p);
+#ifdef FEAT_MBYTE
+	if (has_mbyte)
+	    lp->col -= (*mb_head_off)(p, p + lp->col);
+#endif
+	return 0;
+    }
+
+    if (lp->col > 0)
+    {
+	/* still within line */
 	lp->col--;
 #ifdef FEAT_MBYTE
 	if (has_mbyte)
@@ -429,8 +442,10 @@ dec(pos_T *lp)
 #endif
 	return 0;
     }
-    if (lp->lnum > 1)		/* there is a prior line */
+
+    if (lp->lnum > 1)
     {
+	/* there is a prior line */
 	lp->lnum--;
 	p = ml_get(lp->lnum);
 	lp->col = (colnr_T)STRLEN(p);
@@ -440,7 +455,9 @@ dec(pos_T *lp)
 #endif
 	return 1;
     }
-    return -1;			/* at start of file */
+
+    /* at start of file */
+    return -1;
 }
 
 /*
--- a/src/testdir/test_search.vim
+++ b/src/testdir/test_search.vim
@@ -733,6 +733,8 @@ endfunc
 func Test_search_sentence()
   new
   " this used to cause a crash
-  call assert_fails("/\\%'", 'E486')
+  call assert_fails("/\\%')", 'E486')
   call assert_fails("/", 'E486')
+  /\%'(
+  /
 endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1417,
+/**/
     1416,
 /**/
     1415,