Mercurial > vim
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++; |