changeset 22306:86696c617f70 v8.2.1702

patch 8.2.1702: crash when using undo after deleting folded lines Commit: https://github.com/vim/vim/commit/da697645d5917eb3d4168c06c3442bef9fb746bf Author: Bram Moolenaar <Bram@vim.org> 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)
author Bram Moolenaar <Bram@vim.org>
date Thu, 17 Sep 2020 19:45:04 +0200
parents fc3288b65910
children f43d6cbbaa5b
files src/fold.c src/testdir/test_fold.vim src/version.c
diffstat 3 files changed, 23 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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;
     }
 
--- 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
--- 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,