diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-09-17 19:36:04 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-09-17 19:36:04 +0200 |
commit | da697645d5917eb3d4168c06c3442bef9fb746bf (patch) | |
tree | 7f1801164ab1ef571612b16b1b5c9a532a7c768f | |
parent | 08e51f446bd4bf1a0342c471163b1ed083e9eedb (diff) |
patch 8.2.1702: crash when using undo after deleting folded linesv8.2.1702
Problem: Crash when using undo after deleting folded lines.
Solution: Check for NULL pointer. (closes #6968)
-rw-r--r-- | src/fold.c | 4 | ||||
-rw-r--r-- | src/testdir/test_fold.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 23 insertions, 2 deletions
diff --git a/src/fold.c b/src/fold.c index 5c55b0777b..8a904f64c6 100644 --- a/src/fold.c +++ b/src/fold.c @@ -2422,8 +2422,8 @@ foldUpdateIEMSRecurse( && flp->lvl > 0) { (void)foldFind(gap, startlnum - 1, &fp); - if (fp >= ((fold_T *)gap->ga_data) + gap->ga_len - || fp->fd_top >= startlnum) + if (fp != NULL && (fp >= ((fold_T *)gap->ga_data) + gap->ga_len + || fp->fd_top >= startlnum)) fp = NULL; } diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim index 615fb44ce6..62244640bf 100644 --- a/src/testdir/test_fold.vim +++ b/src/testdir/test_fold.vim @@ -816,4 +816,23 @@ func Test_fold_expr_error() close! endfunc +func Test_undo_fold_deletion() + new + set fdm=marker + let lines =<< trim END + " {{{ + " }}}1 + " {{{ + END + call setline(1, lines) + 3d + g/"/d + undo + redo + eval getline(1, '$')->assert_equal(['']) + + set fdm&vim + bwipe! +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index e06b566181..9d87cdb7d0 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1702, +/**/ 1701, /**/ 1700, |