diff --git a/src/fold.c b/src/fold.c
index 4cc7a47..482d3c9 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -1813,7 +1813,7 @@
 /*
  * Delete marker "marker[markerlen]" at the end of line "lnum".
  * Delete 'commentstring' if it matches.
- * If the marker is not found, there is no error message.  Could a missing
+ * If the marker is not found, there is no error message.  Could be a missing
  * close-marker.
  */
     static void
@@ -1826,6 +1826,9 @@
     char_u	*cms = curbuf->b_p_cms;
     char_u	*cms2;
 
+    // end marker may be missing and fold extends below the last line
+    if (lnum > curbuf->b_ml.ml_line_count)
+	return;
     line = ml_get(lnum);
     for (p = line; *p != NUL; ++p)
 	if (STRNCMP(p, marker, markerlen) == 0)
@@ -2733,16 +2736,19 @@
      * lvl >= level: fold continues below "bot"
      */
 
-    /* Current fold at least extends until lnum. */
+    // Current fold at least extends until lnum.
     if (fp->fd_len < flp->lnum - fp->fd_top)
     {
 	fp->fd_len = flp->lnum - fp->fd_top;
 	fp->fd_small = MAYBE;
 	fold_changed = TRUE;
     }
+    else if (fp->fd_top + fp->fd_len > linecount)
+	// running into the end of the buffer (deleted last line)
+	fp->fd_len = linecount - fp->fd_top + 1;
 
-    /* Delete contained folds from the end of the last one found until where
-     * we stopped looking. */
+    // Delete contained folds from the end of the last one found until where
+    // we stopped looking.
     foldRemove(&fp->fd_nested, startlnum2 - fp->fd_top,
 						  flp->lnum - 1 - fp->fd_top);
 
diff --git a/src/normal.c b/src/normal.c
index 7951bd5..1db1d16 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -9346,13 +9346,15 @@
 		reg1 = get_register(regname, TRUE);
 	    }
 
-	    /* Now delete the selected text. */
+	    // Now delete the selected text. Avoid messages here.
 	    cap->cmdchar = 'd';
 	    cap->nchar = NUL;
 	    cap->oap->regname = NUL;
+	    ++msg_silent;
 	    nv_operator(cap);
 	    do_pending_operator(cap, 0, FALSE);
 	    empty = (curbuf->b_ml.ml_flags & ML_EMPTY);
+	    --msg_silent;
 
 	    /* delete PUT_LINE_BACKWARD; */
 	    cap->oap->regname = regname;
@@ -9407,6 +9409,7 @@
 	if (empty && *ml_get(curbuf->b_ml.ml_line_count) == NUL)
 	{
 	    ml_delete(curbuf->b_ml.ml_line_count, TRUE);
+	    deleted_lines(curbuf->b_ml.ml_line_count + 1, 1);
 
 	    /* If the cursor was in that line, move it to the end of the last
 	     * line. */
diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim
index dc58795..1d5259f 100644
--- a/src/testdir/test_fold.vim
+++ b/src/testdir/test_fold.vim
@@ -741,3 +741,19 @@
   set foldmethod&
   bwipe!
 endfunc
+
+func Test_fold_delete_with_marker()
+  new
+  call setline(1, ['func Func() {{{1', 'endfunc'])
+  1,2yank
+  new
+  set fdm=marker
+  call setline(1, 'x')
+  normal! Vp
+  normal! zd
+  call assert_equal(['func Func() ', 'endfunc'], getline(1, '$'))
+
+  set fdm&
+  bwipe!
+  bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index d7bdfa2..c6944cf 100644
--- a/src/version.c
+++ b/src/version.c
@@ -766,6 +766,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1890,
+/**/
     1889,
 /**/
     1888,
