comparison 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
comparison
equal deleted inserted replaced
13081:25aefadfcd81 13082:a80082fd1a1d
346 * Return 0 otherwise. 346 * Return 0 otherwise.
347 */ 347 */
348 int 348 int
349 inc(pos_T *lp) 349 inc(pos_T *lp)
350 { 350 {
351 char_u *p = ml_get_pos(lp); 351 char_u *p;
352 352
353 if (*p != NUL) /* still within line, move to next char (may be NUL) */ 353 /* when searching position may be set to end of a line */
354 { 354 if (lp->col != MAXCOL)
355 {
356 p = ml_get_pos(lp);
357 if (*p != NUL) /* still within line, move to next char (may be NUL) */
358 {
355 #ifdef FEAT_MBYTE 359 #ifdef FEAT_MBYTE
356 if (has_mbyte) 360 if (has_mbyte)
357 { 361 {
358 int l = (*mb_ptr2len)(p); 362 int l = (*mb_ptr2len)(p);
359 363
360 lp->col += l; 364 lp->col += l;
361 return ((p[l] != NUL) ? 0 : 2); 365 return ((p[l] != NUL) ? 0 : 2);
362 } 366 }
363 #endif 367 #endif
364 lp->col++; 368 lp->col++;
365 #ifdef FEAT_VIRTUALEDIT 369 #ifdef FEAT_VIRTUALEDIT
366 lp->coladd = 0; 370 lp->coladd = 0;
367 #endif 371 #endif
368 return ((p[1] != NUL) ? 0 : 2); 372 return ((p[1] != NUL) ? 0 : 2);
373 }
369 } 374 }
370 if (lp->lnum != curbuf->b_ml.ml_line_count) /* there is a next line */ 375 if (lp->lnum != curbuf->b_ml.ml_line_count) /* there is a next line */
371 { 376 {
372 lp->col = 0; 377 lp->col = 0;
373 lp->lnum++; 378 lp->lnum++;