summaryrefslogtreecommitdiffstats
path: root/src/screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen.c')
-rw-r--r--src/screen.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/screen.c b/src/screen.c
index 47288118c5..7c3a6d7b06 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2369,7 +2369,6 @@ screenalloc(int doclear)
u8char_T *new_ScreenLinesUC = NULL;
u8char_T *new_ScreenLinesC[MAX_MCO];
schar_T *new_ScreenLines2 = NULL;
- int i;
sattr_T *new_ScreenAttrs;
colnr_T *new_ScreenCols;
unsigned *new_LineOffset;
@@ -2438,8 +2437,9 @@ retry:
*/
FOR_ALL_TAB_WINDOWS(tp, wp)
win_free_lsize(wp);
- if (aucmd_win != NULL)
- win_free_lsize(aucmd_win);
+ for (int i = 0; i < AUCMD_WIN_COUNT; ++i)
+ if (aucmd_win[i].auc_win_used)
+ win_free_lsize(aucmd_win[i].auc_win);
#ifdef FEAT_PROP_POPUP
// global popup windows
FOR_ALL_POPUPWINS(wp)
@@ -2455,7 +2455,7 @@ retry:
if (enc_utf8)
{
new_ScreenLinesUC = LALLOC_MULT(u8char_T, (Rows + 1) * Columns);
- for (i = 0; i < p_mco; ++i)
+ for (int i = 0; i < p_mco; ++i)
new_ScreenLinesC[i] = LALLOC_CLEAR_MULT(u8char_T,
(Rows + 1) * Columns);
}
@@ -2482,9 +2482,14 @@ retry:
goto give_up;
}
}
- if (aucmd_win != NULL && aucmd_win->w_lines == NULL
- && win_alloc_lines(aucmd_win) == FAIL)
- outofmem = TRUE;
+ for (int i = 0; i < AUCMD_WIN_COUNT; ++i)
+ if (aucmd_win[i].auc_win_used
+ && aucmd_win[i].auc_win->w_lines == NULL
+ && win_alloc_lines(aucmd_win[i].auc_win) == FAIL)
+ {
+ outofmem = TRUE;
+ break;
+ }
#ifdef FEAT_PROP_POPUP
// global popup windows
FOR_ALL_POPUPWINS(wp)
@@ -2505,11 +2510,15 @@ retry:
give_up:
- for (i = 0; i < p_mco; ++i)
+ int found_null = FALSE;
+ for (int i = 0; i < p_mco; ++i)
if (new_ScreenLinesC[i] == NULL)
+ {
+ found_null = TRUE;
break;
+ }
if (new_ScreenLines == NULL
- || (enc_utf8 && (new_ScreenLinesUC == NULL || i != p_mco))
+ || (enc_utf8 && (new_ScreenLinesUC == NULL || found_null))
|| (enc_dbcs == DBCS_JPNU && new_ScreenLines2 == NULL)
|| new_ScreenAttrs == NULL
|| new_ScreenCols == NULL
@@ -2534,7 +2543,7 @@ give_up:
}
VIM_CLEAR(new_ScreenLines);
VIM_CLEAR(new_ScreenLinesUC);
- for (i = 0; i < p_mco; ++i)
+ for (int i = 0; i < p_mco; ++i)
VIM_CLEAR(new_ScreenLinesC[i]);
VIM_CLEAR(new_ScreenLines2);
VIM_CLEAR(new_ScreenAttrs);
@@ -2571,7 +2580,7 @@ give_up:
{
(void)vim_memset(new_ScreenLinesUC + new_row * Columns,
0, (size_t)Columns * sizeof(u8char_T));
- for (i = 0; i < p_mco; ++i)
+ for (int i = 0; i < p_mco; ++i)
(void)vim_memset(new_ScreenLinesC[i]
+ new_row * Columns,
0, (size_t)Columns * sizeof(u8char_T));
@@ -2603,7 +2612,7 @@ give_up:
mch_memmove(new_ScreenLinesUC + new_LineOffset[new_row],
ScreenLinesUC + LineOffset[old_row],
(size_t)len * sizeof(u8char_T));
- for (i = 0; i < p_mco; ++i)
+ for (int i = 0; i < p_mco; ++i)
mch_memmove(new_ScreenLinesC[i]
+ new_LineOffset[new_row],
ScreenLinesC[i] + LineOffset[old_row],
@@ -2636,7 +2645,7 @@ give_up:
// NOTE: this may result in all pointers to become NULL.
ScreenLines = new_ScreenLines;
ScreenLinesUC = new_ScreenLinesUC;
- for (i = 0; i < p_mco; ++i)
+ for (int i = 0; i < p_mco; ++i)
ScreenLinesC[i] = new_ScreenLinesC[i];
Screen_mco = p_mco;
ScreenLines2 = new_ScreenLines2;