# HG changeset patch # User Bram Moolenaar # Date 1600364704 -7200 # Node ID 86696c617f70ac95b09a5619d500a8e32448f906 # Parent fc3288b65910b225232929625734b38045f9bab2 patch 8.2.1702: crash when using undo after deleting folded lines Commit: https://github.com/vim/vim/commit/da697645d5917eb3d4168c06c3442bef9fb746bf Author: Bram Moolenaar Date: Thu Sep 17 19:36:04 2020 +0200 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 https://github.com/vim/vim/issues/6968) diff --git a/src/fold.c b/src/fold.c --- 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 --- 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 --- 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,