1
0
forked from aniani/vim

patch 8.2.2510: internal error when popup with mask is zero height or width

Problem:    Internal error when popup with mask is zero height or width.
Solution:   Bail out if width or height is zero. (closes #7831)
This commit is contained in:
Bram Moolenaar
2021-02-13 21:31:18 +01:00
parent 8d4be89011
commit 10ccfb2a17
3 changed files with 26 additions and 1 deletions

View File

@@ -3331,8 +3331,12 @@ popup_update_mask(win_T *wp, int width, int height)
char_u *cells;
int row, col;
if (wp->w_popup_mask == NULL)
if (wp->w_popup_mask == NULL || width == 0 || height == 0)
{
vim_free(wp->w_popup_mask_cells);
wp->w_popup_mask_cells = NULL;
return;
}
if (wp->w_popup_mask_cells != NULL
&& wp->w_popup_mask_height == height
&& wp->w_popup_mask_width == width)

View File

@@ -825,6 +825,25 @@ func Test_popup_with_mask()
" this was causing a crash
call popup_create('test', #{mask: [[0, 0, 0, 0]]})
call popup_clear()
" this was causing an internal error
enew
set nowrap
call repeat('x', &columns)->setline(1)
call prop_type_add('textprop', {})
call prop_add(1, 1, #{length: &columns, type: 'textprop'})
vsplit
let opts = popup_create('', #{textprop: 'textprop'})
\ ->popup_getoptions()
\ ->extend(#{mask: [[1, 1, 1, 1]]})
call popup_create('', opts)
redraw
close!
bwipe!
call prop_type_delete('textprop')
call popup_clear()
set wrap&
endfunc
func Test_popup_select()

View File

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