patch 8.2.1560: using NULL pointers in some code

Problem:    Using NULL pointers in some code. (James McCoy)
Solution:   Avoid adding to a NULL pointer.  Use byte as unsigned.
diff --git a/src/fold.c b/src/fold.c
index 3c106d2..d95b46b 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -1314,7 +1314,7 @@
 	if (!foldFind(gap, lnum, &fp))
 	{
 	    // If there is a following fold, continue there next time.
-	    if (fp < (fold_T *)gap->ga_data + gap->ga_len)
+	    if (fp != NULL && fp < (fold_T *)gap->ga_data + gap->ga_len)
 		next = fp->fd_top + off;
 	    break;
 	}
@@ -2905,18 +2905,20 @@
     // any between top and bot, they have been removed by the caller.
     gap1 = &fp->fd_nested;
     gap2 = &fp[1].fd_nested;
-    (void)(foldFind(gap1, bot + 1 - fp->fd_top, &fp2));
-    len = (int)((fold_T *)gap1->ga_data + gap1->ga_len - fp2);
-    if (len > 0 && ga_grow(gap2, len) == OK)
+    if (foldFind(gap1, bot + 1 - fp->fd_top, &fp2))
     {
-	for (idx = 0; idx < len; ++idx)
+	len = (int)((fold_T *)gap1->ga_data + gap1->ga_len - fp2);
+	if (len > 0 && ga_grow(gap2, len) == OK)
 	{
-	    ((fold_T *)gap2->ga_data)[idx] = fp2[idx];
-	    ((fold_T *)gap2->ga_data)[idx].fd_top
-						 -= fp[1].fd_top - fp->fd_top;
+	    for (idx = 0; idx < len; ++idx)
+	    {
+		((fold_T *)gap2->ga_data)[idx] = fp2[idx];
+		((fold_T *)gap2->ga_data)[idx].fd_top
+						  -= fp[1].fd_top - fp->fd_top;
+	    }
+	    gap2->ga_len = len;
+	    gap1->ga_len -= len;
 	}
-	gap2->ga_len = len;
-	gap1->ga_len -= len;
     }
     fp->fd_len = top - fp->fd_top;
     fold_changed = TRUE;