diff src/misc2.c @ 13082:a80082fd1a1d v8.0.1416

patch 8.0.1416: crash when searching for a sentence commit https://github.com/vim/vim/commit/8ada6aa9298b4764d9ca0024dd21b17e815595ce Author: Bram Moolenaar <Bram@vim.org> Date: Tue Dec 19 21:23:21 2017 +0100 patch 8.0.1416: crash when searching for a sentence Problem: Crash when searching for a sentence. Solution: Return NUL when getting character at MAXCOL. (closes https://github.com/vim/vim/issues/2468)
author Christian Brabandt <cb@256bit.org>
date Tue, 19 Dec 2017 21:30:05 +0100
parents ebb4f6c93598
children 25ab78f14c8b
line wrap: on
line diff
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -348,24 +348,29 @@ inc_cursor(void)
     int
 inc(pos_T *lp)
 {
-    char_u  *p = ml_get_pos(lp);
-
-    if (*p != NUL)	/* still within line, move to next char (may be NUL) */
+    char_u  *p;
+
+    /* when searching position may be set to end of a line */
+    if (lp->col != MAXCOL)
     {
-#ifdef FEAT_MBYTE
-	if (has_mbyte)
+	p = ml_get_pos(lp);
+	if (*p != NUL)	/* still within line, move to next char (may be NUL) */
 	{
-	    int l = (*mb_ptr2len)(p);
-
-	    lp->col += l;
-	    return ((p[l] != NUL) ? 0 : 2);
+#ifdef FEAT_MBYTE
+	    if (has_mbyte)
+	    {
+		int l = (*mb_ptr2len)(p);
+
+		lp->col += l;
+		return ((p[l] != NUL) ? 0 : 2);
+	    }
+#endif
+	    lp->col++;
+#ifdef FEAT_VIRTUALEDIT
+	    lp->coladd = 0;
+#endif
+	    return ((p[1] != NUL) ? 0 : 2);
 	}
-#endif
-	lp->col++;
-#ifdef FEAT_VIRTUALEDIT
-	lp->coladd = 0;
-#endif
-	return ((p[1] != NUL) ? 0 : 2);
     }
     if (lp->lnum != curbuf->b_ml.ml_line_count)     /* there is a next line */
     {