diff --git a/src/fold.c b/src/fold.c
index 043037f..e4ae9cb 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -820,13 +820,16 @@
 	return;
 #endif
 
-    // Mark all folds from top to bot as maybe-small.
-    (void)foldFind(&wp->w_folds, top, &fp);
-    while (fp < (fold_T *)wp->w_folds.ga_data + wp->w_folds.ga_len
-	    && fp->fd_top < bot)
+    if (wp->w_folds.ga_len > 0)
     {
-	fp->fd_small = MAYBE;
-	++fp;
+	// Mark all folds from top to bot as maybe-small.
+	(void)foldFind(&wp->w_folds, top, &fp);
+	while (fp < (fold_T *)wp->w_folds.ga_data + wp->w_folds.ga_len
+		&& fp->fd_top < bot)
+	{
+	    fp->fd_small = MAYBE;
+	    ++fp;
+	}
     }
 
     if (foldmethodIsIndent(wp)
@@ -1127,6 +1130,12 @@
     fold_T	*fp;
     int		i;
 
+    if (gap->ga_len == 0)
+    {
+	*fpp = NULL;
+	return FALSE;
+    }
+
     /*
      * Perform a binary search.
      * "low" is lowest index of possible match.
@@ -2500,14 +2509,14 @@
 		// Find an existing fold to re-use.  Preferably one that
 		// includes startlnum, otherwise one that ends just before
 		// startlnum or starts after it.
-		if (foldFind(gap, startlnum, &fp)
+		if (gap->ga_len > 0 && (foldFind(gap, startlnum, &fp)
 			|| (fp < ((fold_T *)gap->ga_data) + gap->ga_len
 			    && fp->fd_top <= firstlnum)
 			|| foldFind(gap, firstlnum - concat, &fp)
 			|| (fp < ((fold_T *)gap->ga_data) + gap->ga_len
 			    && ((lvl < level && fp->fd_top < flp->lnum)
 				|| (lvl >= level
-					   && fp->fd_top <= flp->lnum_save))))
+					   && fp->fd_top <= flp->lnum_save)))))
 		{
 		    if (fp->fd_top + fp->fd_len + concat > firstlnum)
 		    {
@@ -2622,7 +2631,10 @@
 		{
 		    // Insert new fold.  Careful: ga_data may be NULL and it
 		    // may change!
-		    i = (int)(fp - (fold_T *)gap->ga_data);
+		    if (gap->ga_len == 0)
+			i = 0;
+		    else
+			i = (int)(fp - (fold_T *)gap->ga_data);
 		    if (foldInsert(gap, i) != OK)
 			return bot;
 		    fp = (fold_T *)gap->ga_data + i;
@@ -2841,7 +2853,7 @@
     if (ga_grow(gap, 1) != OK)
 	return FAIL;
     fp = (fold_T *)gap->ga_data + i;
-    if (i < gap->ga_len)
+    if (gap->ga_len > 0 && i < gap->ga_len)
 	mch_memmove(fp + 1, fp, sizeof(fold_T) * (gap->ga_len - i));
     ++gap->ga_len;
     ga_init2(&fp->fd_nested, (int)sizeof(fold_T), 10);
@@ -2928,7 +2940,7 @@
     if (bot < top)
 	return;		// nothing to do
 
-    for (;;)
+    while (gap->ga_len > 0)
     {
 	// Find fold that includes top or a following one.
 	if (foldFind(gap, top, &fp) && fp->fd_top < top)
