summaryrefslogtreecommitdiffstats
path: root/src/fold.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fold.c')
-rw-r--r--src/fold.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/fold.c b/src/fold.c
index 3c106d25cf..d95b46b5b4 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -1314,7 +1314,7 @@ setManualFoldWin(
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 @@ foldSplit(
// 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;