From da697645d5917eb3d4168c06c3442bef9fb746bf Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 17 Sep 2020 19:36:04 +0200 Subject: patch 8.2.1702: crash when using undo after deleting folded lines Problem: Crash when using undo after deleting folded lines. Solution: Check for NULL pointer. (closes #6968) --- src/fold.c | 4 ++-- src/testdir/test_fold.vim | 19 +++++++++++++++++++ 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 @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1702, /**/ 1701, /**/ -- cgit v1.2.3