Mercurial > vim
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