aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/fold.c3
-rw-r--r--src/nvim/testdir/test_fold.vim11
2 files changed, 14 insertions, 0 deletions
diff --git a/src/nvim/fold.c b/src/nvim/fold.c
index 57001f77ed..96968a5d49 100644
--- a/src/nvim/fold.c
+++ b/src/nvim/fold.c
@@ -888,6 +888,9 @@ int foldMoveTo(
// that moves the cursor is used.
linenr_T lnum_off = 0;
garray_T *gap = &curwin->w_folds;
+ if (gap->ga_len == 0) {
+ break;
+ }
bool use_level = false;
bool maybe_small = false;
linenr_T lnum_found = curwin->w_cursor.lnum;
diff --git a/src/nvim/testdir/test_fold.vim b/src/nvim/testdir/test_fold.vim
index 692f6e4780..e4baa34e4a 100644
--- a/src/nvim/testdir/test_fold.vim
+++ b/src/nvim/testdir/test_fold.vim
@@ -795,3 +795,14 @@ func Test_fold_delete_first_line()
bwipe!
set foldmethod&
endfunc
+
+" this was crashing
+func Test_move_no_folds()
+ new
+ fold
+ setlocal fdm=expr
+ normal zj
+ bwipe!
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab