1
0
forked from aniani/vim

patch 8.1.1845: may use NULL pointer when running out of memory

Problem:    May use NULL pointer when running out of memory.
Solution:   Do not clear popup buffers when NULL. (closes #4802)
This commit is contained in:
Bram Moolenaar
2019-08-13 23:09:49 +02:00
parent 45311b5274
commit 6ace95e981
2 changed files with 8 additions and 2 deletions

View File

@@ -8645,10 +8645,16 @@ give_up:
} }
/* Use the last line of the screen for the current line. */ /* Use the last line of the screen for the current line. */
current_ScreenLine = new_ScreenLines + Rows * Columns; current_ScreenLine = new_ScreenLines + Rows * Columns;
#ifdef FEAT_TEXT_PROP
vim_memset(new_popup_mask, 0, Rows * Columns * sizeof(short));
vim_memset(new_popup_transparent, 0, Rows * Columns * sizeof(char));
#endif
} }
free_screenlines(); free_screenlines();
// NOTE: this may result in all pointers to become NULL.
ScreenLines = new_ScreenLines; ScreenLines = new_ScreenLines;
ScreenLinesUC = new_ScreenLinesUC; ScreenLinesUC = new_ScreenLinesUC;
for (i = 0; i < p_mco; ++i) for (i = 0; i < p_mco; ++i)
@@ -8661,10 +8667,8 @@ give_up:
TabPageIdxs = new_TabPageIdxs; TabPageIdxs = new_TabPageIdxs;
#ifdef FEAT_TEXT_PROP #ifdef FEAT_TEXT_PROP
popup_mask = new_popup_mask; popup_mask = new_popup_mask;
vim_memset(popup_mask, 0, Rows * Columns * sizeof(short));
popup_mask_next = new_popup_mask_next; popup_mask_next = new_popup_mask_next;
popup_transparent = new_popup_transparent; popup_transparent = new_popup_transparent;
vim_memset(popup_transparent, 0, Rows * Columns * sizeof(char));
popup_mask_refresh = TRUE; popup_mask_refresh = TRUE;
#endif #endif

View File

@@ -769,6 +769,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1845,
/**/ /**/
1844, 1844,
/**/ /**/