mirror of
https://github.com/vim/vim.git
synced 2025-10-04 05:25:06 -04:00
patch 8.1.1890: ml_get error when deleting fold marker
Problem: Ml_get error when deleting fold marker. Solution: Check that the line number is not below the last line. Adjust the fold when deleting the empty line. (Christian Brabandt, closes #4834)
This commit is contained in:
14
src/fold.c
14
src/fold.c
@@ -1813,7 +1813,7 @@ deleteFoldMarkers(
|
||||
/*
|
||||
* Delete marker "marker[markerlen]" at the end of line "lnum".
|
||||
* Delete 'commentstring' if it matches.
|
||||
* If the marker is not found, there is no error message. Could a missing
|
||||
* If the marker is not found, there is no error message. Could be a missing
|
||||
* close-marker.
|
||||
*/
|
||||
static void
|
||||
@@ -1826,6 +1826,9 @@ foldDelMarker(linenr_T lnum, char_u *marker, int markerlen)
|
||||
char_u *cms = curbuf->b_p_cms;
|
||||
char_u *cms2;
|
||||
|
||||
// end marker may be missing and fold extends below the last line
|
||||
if (lnum > curbuf->b_ml.ml_line_count)
|
||||
return;
|
||||
line = ml_get(lnum);
|
||||
for (p = line; *p != NUL; ++p)
|
||||
if (STRNCMP(p, marker, markerlen) == 0)
|
||||
@@ -2733,16 +2736,19 @@ foldUpdateIEMSRecurse(
|
||||
* lvl >= level: fold continues below "bot"
|
||||
*/
|
||||
|
||||
/* Current fold at least extends until lnum. */
|
||||
// Current fold at least extends until lnum.
|
||||
if (fp->fd_len < flp->lnum - fp->fd_top)
|
||||
{
|
||||
fp->fd_len = flp->lnum - fp->fd_top;
|
||||
fp->fd_small = MAYBE;
|
||||
fold_changed = TRUE;
|
||||
}
|
||||
else if (fp->fd_top + fp->fd_len > linecount)
|
||||
// running into the end of the buffer (deleted last line)
|
||||
fp->fd_len = linecount - fp->fd_top + 1;
|
||||
|
||||
/* Delete contained folds from the end of the last one found until where
|
||||
* we stopped looking. */
|
||||
// Delete contained folds from the end of the last one found until where
|
||||
// we stopped looking.
|
||||
foldRemove(&fp->fd_nested, startlnum2 - fp->fd_top,
|
||||
flp->lnum - 1 - fp->fd_top);
|
||||
|
||||
|
Reference in New Issue
Block a user